Сейчас на форуме: asfa (+6 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› помогите пожалуйста с SYSENTER. |
Посл.ответ | Сообщение |
|
Создано: 13 июля 2010 13:19 · Личное сообщение · #1 наткнулся в программе на такое вот чудо 77D664F0 > 8BD4 MOV EDX,ESP 77D664F2 0F34 SYSENTER 77D664F4 > C3 RETN ESP=0012F740 EDX=7FFE0300 EAX 00000130 я так понял после выполнения SYSENTER программа обрашается к dll которая валяется в папке с программой, что то там химичит) и говорит запустит вторую копию или нет) Собственно вопрос) как попасть в эту ддл после выполнения команды SYSENTER, ну то есть глянуть что там происходит) понят что изменить чтобы запустилась вторая копия) ![]() |
|
Создано: 13 июля 2010 14:10 · Личное сообщение · #2 |
|
Создано: 13 июля 2010 14:29 · Поправил: DiKill · Личное сообщение · #3 Запускаю программу. Она висит в памяти. Скажем 1.exe. Пытаемся запустить вторую копию. Через olly дохожу до этого места. Нажимаю F8. Доходим до С3. Ничего не происходит. Через olly дохожу до этого места. Нажимаю F8. Доходим до SYSENTER. Убиваю в процессах 1.exe. Нажимаю F8. Программа запускается. То есть программе по барабану что происходило до этого. главное в процессах не висит 1.exe значит можно запускаться.. Я просто подумал что на этом моменте она лезет в ддл которая лежит рядом с ехе) Без ддл она не запускается) ![]() |
|
Создано: 13 июля 2010 16:18 · Личное сообщение · #4 |
|
Создано: 13 июля 2010 16:43 · Поправил: DiKill · Личное сообщение · #5 |
|
Создано: 13 июля 2010 18:02 · Поправил: Gerpes · Личное сообщение · #6 |
|
Создано: 13 июля 2010 18:53 · Поправил: DiKill · Личное сообщение · #7 |
|
Создано: 14 июля 2010 00:24 · Личное сообщение · #8 |
|
Создано: 14 июля 2010 07:18 · Личное сообщение · #9 |
|
Создано: 14 июля 2010 09:46 · Поправил: DiKill · Личное сообщение · #10 004010B8 FF15 1CC04000 CALL DWORD PTR DS:[<&KERNEL32.GetStartup>; kernel32.GetStartupInfoA 004010D9 FF15 14C04000 CALL DWORD PTR DS:[<&KERNEL32.CreateProc>; kernel32.CreateProcessA 00401108 FF15 38C04000 CALL DWORD PTR DS:[<&KERNEL32.GetCurrent>; kernel32.GetCurrentDirectoryA 00401010 FF15 24C04000 CALL DWORD PTR DS:[<&KERNEL32.VirtualAll>; kernel32.VirtualAllocEx 00401039 FF15 44C04000 CALL DWORD PTR DS:[<&KERNEL32.WriteProce>; kernel32.WriteProcessMemory 0040104D FF15 34C04000 CALL DWORD PTR DS:[<&KERNEL32.GetModuleH>; kernel32.GetModuleHandleA 00401054 FF15 20C04000 CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; kernel32.GetProcAddress 00401065 FF15 0CC04000 CALL DWORD PTR DS:[<&KERNEL32.CreateRemo>; kernel32.CreateRemoteThread Вот так происходит запуск. Может он пытается создать второе окно в той же памяти... RagexeRE.bin тут нашел мутекс) Через Process Monitor нашел мутантика) Mutant \Sessions\1\BaseNamedObjects\injlumi_re.dll Сделал так чтобы игра запускалась через вот такие вот файлы lumi.exe 1.exe 1.dll Но мутант не сменился на \Sessions\1\BaseNamedObjects\1.dll, а остался прежним. После убийства мутанта вторая копия перестала в памяти оставлять процесс) ![]() |
|
Создано: 14 июля 2010 14:00 · Поправил: zeppe1in · Личное сообщение · #11 DiKill ну похоже будто лоадер инжектит длл. может добавить в импорт эту длл. или добавить код c loadlibrary, чтобы этот RagexeRE.bin норм запускался без лоадера. а создание мутекса надо пропатчить что бы был не именованный, там пустую строку или ноль передавать не помню. ПС: игра много весит? интересная?) ----- zzz ![]() |
|
Создано: 14 июля 2010 15:58 · Личное сообщение · #12 DiKill Что-то мне подсказывает, что ты не туда копаешь. Исходи из сути проблемы. Тебе нужно запустить вторую копию программы, а она при старте проверяет запущен ли процесс с таким же именем как сама. Значит ставь бряки на LoadLibrary, CreateProcess, ExitProcess (по нему прога вырубается, если уже запущена). ![]() |
|
Создано: 14 июля 2010 18:51 · Личное сообщение · #13 |
|
Создано: 15 июля 2010 00:53 · Личное сообщение · #14 |
|
Создано: 15 июля 2010 09:41 · Личное сообщение · #15 |
|
Создано: 15 июля 2010 11:14 · Поправил: Neo32 · Личное сообщение · #16 |
![]() |
eXeL@B —› Вопросы новичков —› помогите пожалуйста с SYSENTER. |