首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >程序前的Ollydbg指令

程序前的Ollydbg指令
EN

Stack Overflow用户
提问于 2011-06-17 06:35:10
回答 1查看 2.7K关注 0票数 0

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

代码语言:javascript
复制
char* a = "hello world";
printf(a);

但是,当我在ollydbg中打开它时,我不会像在gdb中那样直接进入程序集,首先会有更多的指令。我想知道为什么会发生这种事。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

从这里开始:

代码语言:javascript
复制
Blackene.<ModuleEntryPoint> 004029C3                                   E8 FC030000                                             CALL Blackene.__security_init_cookie
004029C8                                                             ^ E9 D7FCFFFF                                             JMP Blackene.__tmainCRTStartup

我们转到这里:

代码语言:javascript
复制
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

然后向下滚动到这里:

代码语言:javascript
复制
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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6379401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档