【问题标题】:Ollydbg instructions before program程序前的 Ollydbg 指令
【发布时间】:2011-09-16 18:55:53
【问题描述】:

我是逆向工程新手,一直在看一个简单的程序:

char* a = "hello world";
printf(a);

但是,当我在 ollydbg 中打开它时,我并没有像在 gdb 中那样直接进入程序集,首先还有更多说明。我想知道为什么会这样。

谢谢!

【问题讨论】:

  • 那么你是说你被带到一些汇编代码,只是不是你所期望的?

标签: reverse-engineering ollydbg


【解决方案1】:

根据您使用 olly 附加到程序的方式,您将被带到两个地方之一(如果没有发生错误):

  • 模块入口点(又名main/WinMain/DllMain 的系统粘合和 CRT 包装器):当您使用 olly 启动程序时会发生这种情况。
  • NtUserBreakPoint:这是您附加到现有进程的时候。

要导航到您想要的位置,您可以使用ctrl + e 调出模块窗口,从那里选择您想要的模块。然后使用crtl + n 调出当前模块的符号窗口(注意:对于可用的非导出符号,pdb 需要可用,或者您需要为该构建执行 obj 的对象扫描)。

如果您转到ModuleEntryPoint,您也可以沿着调用链向下探索(通常您需要第二次调用/jmp),这会将您带到 crt 入口点,然后从那里查找 3/5 的调用/4 args,这将是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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 2020-09-10
    • 2014-08-17
    • 2014-08-14
    • 1970-01-01
    • 2014-07-12
    • 2010-12-16
    • 2012-03-27
    相关资源
    最近更新 更多