我对逆向工程是个新手,我一直在看一个简单的程序:
char* a = "hello world";
printf(a);但是,当我在ollydbg中打开它时,我不会像在gdb中那样直接进入程序集,首先会有更多的指令。我想知道为什么会发生这种事。
谢谢!
发布于 2011-06-17 13:15:06
根据您使用olly附加到程序的方式,您将被带到以下两个位置之一(如果没有发生错误):
main/WinMain/DllMain):的系统粘合和CRT包装器)当您使用olly.NtUserBreakPoint:启动程序时,就会出现这种情况。要导航到所需的位置,可以使用ctrl + e打开模块窗口,从那里选择所需的模块。然后使用crtl + n打开当前模块的symbols窗口(注意:对于要使用的非导出符号,pdb需要可用,或者您需要为该构建执行obj的对象扫描)。
如果你被带到crt,你也可以沿着调用链往下拼写(通常你想要第二个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。
https://stackoverflow.com/questions/6379401
复制相似问题