В зависимости от того, как вы подключитесь к программе с помощью olly, вы попадете в одно из двух мест (если не возникло ошибок):
- Точка входа модуля (также известная как системный клей и оболочка CRT для
main
/WinMain
/DllMain
): это происходит, когда вы запускаете программу с помощью olly.
NtUserBreakPoint
: это когда вы присоединяетесь к существующему процессу.
Чтобы перейти туда, куда вы хотите, вы можете использовать ctrl + e
, чтобы открыть окно модулей, оттуда выберите нужный модуль. Затем используйте crtl + n
, чтобы вызвать окно символов для вашего текущего модуля (примечание: для того, чтобы неэкспортированные символы были доступны, должен быть доступен pdb или вам нужно выполнить сканирование объектов ваших объектов для этой сборки).
если вас перевели в ModuleEntryPoint
, вы также можете просто просмотреть цепочку вызовов (обычно вам нужен второй вызов/jmp), это приведет вас к точке входа crt, оттуда просто найдите вызов с 3/5/4 аргументами, это будет main
/WinMain
/DllMain
:
отсюда:
Blackene.<ModuleEntryPoint> 004029C3 E8 FC030000 CALL Blackene.__security_init_cookie
004029C8 ^ E9 D7FCFFFF JMP Blackene.__tmainCRTStartup
мы идем сюда:
Blackene.__tmainCRTStartup 004026A4 6A 58 PUSH 58
004026A6 68 48474000 PUSH Blackene.00404748
004026AB E8 1C060000 CALL Blackene.__SEH_prolog4
004026B0 33DB XOR EBX,EBX
затем прокрутите вниз здесь:
004027D3 6A 0A PUSH 0A
004027D5 58 POP EAX
004027D6 50 PUSH EAX
004027D7 56 PUSH ESI
004027D8 6A 00 PUSH 0
004027DA 68 00004000 PUSH Blackene.00400000
004027DF E8 2CF2FFFF CALL Blackene.WinMain
Я предполагаю, что используется ollydbg 1.10.
person
Necrolis
schedule
17.06.2011