![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
есть программа которая не разрешает открыть 2 окна, но при этом 2 окна открываються в разных пользователях ! (запуск от имени другого пользователя не помогает, надо запустить именно 2 разных пользователя.)
Как можно виртуально реализовать разных пользователей ??? только что бы было в пределах одного рабочего стола... В первую очередь меня интересует теория... а там уже можно и практику... Всем очень благодарен заранее за помощь ! |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 1 Всего: 207 |
какая среда и платформа реализации?
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
Windows XP, C++ - WinAPI , разные левые классы и т. д. подойдут
Добавлено через 2 минуты и 52 секунды извините пожайлуста что так долго не отвечал... благодарен Вам очень за помощь |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
См в MSDN функции LogonUser и CreateProcessAsUser |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
не нужно никого "виртуально реализовывать". надо просто найти вызов CreateMutex/CreateObject(как правило, именно эти функции и обычно первые их вызовы) в дизассемблированном коде и пропатчить оный. но могут быть глюки, если программа захватывает в единоличное владение какие-либо ресурсы в пределах сессии.
hint: exe'шник выложи куда-нибудь - посмотрим. |
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
так вот дело и в том что хотелось бы именно так сделать как я говорю... так как интересно бы розобраться...
P.S. xvr, посмотрю щас в MSDN.... мож поможет, пасиба |
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
не, такие ф-и MSDN немного не то :( мы просто запускаем с правами другого пользователя программу... а мне надо именно симитировать нового пользователя: типа как запустил пользователя нажал win+L, выбрал другого пользователя и запустил прогу...
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Эти функции как раз то - запуск от имени другого пользователя.
Так что только манипуляции с окнами и desktop'ами Можно попробовать найти окно запущенной программы и поменять имя окна |
||||
|
|||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
FindWindow - Ищет окно по заданному классу окна и заголовку (скорее всего программа использует эту функцию для поиска своей запущенной копии). При поиске можно не указывать ни имя класса ни заголовок. Если программа ищет без учета заголовка, то метод его подмены не пройдет Для подмены делаем следующее:
|
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
Не, по имени окна не катит тоже :(
походу по именни класса окна... мож ктот знает как можно сменить ? |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
ну да, как говорится, "хозяин - барин". перебирай варианты... |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Не поможет. Судя по симптомам (возможность запуска на разных desktop'ах) используются не глобальные mutex'ы, а банальный поиск окна запущенного экземпляра программы по классу (окна). Так что искать и пэтчить надо FindWindow (или FindWindowEx). 2 Djinn: Пэтчить не обязательно exe'ник, это можно сделать и в уже загруженной программе, не трогая исполняемый файл. |
|||
|
||||
| Djinn |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
Не будь так уверен... Просто раньше оно было по другому сделано...
Это понятно... так вот меня и интересует как можно сменить имя класса ??? наверняка есть ф-я какая нибудь... Щас сам поищу... если найду, то скажу... Добавлено через 4 минуты и 7 секунд
Та и дело даже далеко не в этом... вобшем меня именно мало интересует патчить программу... скорее вариант со сменной класса окна... |
||||||
|
|||||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
нет. основной смысл был не в патче, а в распознании метода защиты от повторного запуска, дабы потом осмысленно с ним побороться - методов немало. |
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
так вот и дело то в том что я это делал можно сказать на угад... ну не совсем... просто я использовал OllyDebug, а там все вывховы по аддресам :( поэтому я стараюсь делать по смыслу кода :( |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
||||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Маловероятно - локальные в пределах сесии mutex'ы бывают только при запущенном terminal server'е:
|
||||||
|
|||||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
т.е. те 4(из четырех) программ, которые попадали ко мне в связи с "проблемами блокировки", стоит считать исключениями?
|
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
Ну я немного асм знаю... пытаюсь смотреть что где и куда пишет... в итоге убераю саму проверку... То что я полностью не разобрался как это всё делается, согласен... я в отладчике не розобрался как узнать какую апи ф-ю он вызывает... так как там по аддресам всё :( Добавлено через 4 минуты и 46 секунд кстати, ещё... это клиент и помимо того что он проверчет на второй клинт... ещё он походу серваку отсылает какието данные... потому что если меняешь его код, он перестает работать... наверн дату последнего измененения... |
|||
|
||||
| xvr |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Ну, 4 из 4х - это для статистики маловато
Вообще то наличие mutex'а можно посмотреть, была какая то утилита, которая дамповала объекты ядра (где то в районе winternals) Во, нашел WinObj (Mutex'ы там называются Mutant'ами |
||||||
|
|||||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
а если в разных пользовательских сессиях запускаешь, работает?
дык а я и не говорю, что 100%. "вполне вероятно" наиболее подходит. лучше TaskInfo - она предметно показывает, какой процесс что пооткрывал(объекты,файлы,соединения,...). тру тулза. платная маленько, но это обычно не является проблемой. mutex - это "внешнее" название объекта ядра mutant. |
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Ну это просто праздник какой-то Может с этого и надо было начинать, ибо нет никакого смысла запускать вторую копию приложения, если она не работает |
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
||||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
я спрашивал про работу неизмененного приложения. подозревал, что это очевидно.
а раз так, то есть надежда, что и правильно измененный вариант будет работать. третий(и пожалуй последний) раз предлагаю тебе выложить .exe'шник "на показ". ибо несколько утомило это "переливание из пустого в порожнее". |
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
||||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
хех, долго бы ты перебирал...
техническая часть: борьба с "двойным запуском" не отличается поверхностностью: CreateFileMapping, CreateEvent, EnumWindows, CRC32, MD5... xvr, как тебе такой расклад? - я посмеялсо... проза: так как это приложение является многопользовательской online-игрой, то цели твои понятны. но малоприятны. (ээ... стихи? не, прозу обещал) поэтому я тут выложу просто случайный набор букв и цифр, а ты уж проверяй:
|
|||
|
||||
| Djinn |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 18.5.2007 Репутация: нет Всего: 1 |
та я уже давно в игры не играю
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |