Ollydbg 程序前指令

发布于 2024-11-15 23:47:46 字数 181 浏览 0 评论 0原文

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

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

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

谢谢!

I am new to reverse engineering, and I have been looking at a simple program:

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

However, when I open this in ollydbg, I am not taken right to the assembly as I would have been in gdb, there are many more instructions first. I was wondering why this was happening.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

画中仙 2024-11-22 23:47:46

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

  • 模块入口点(又名 main/< 的系统粘合和 CRT 包装器code>WinMain/DllMain):当您使用 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。

Depending how you attach to the program with olly, you'll be take to one of two places(if no errors occurred):

  • The module entry point (aka the system glue and CRT wrapper for main/WinMain/DllMain): this occurs when you start a program with olly.
  • NtUserBreakPoint: this is when you attach to an existing process.

To navigate to where you want you can use ctrl + e to bring up the modules window, from there, select the module you want. Then use crtl + n to bring up the symbols window for your current module (note: for non-exported symbols to be available, the pdb's need to be available or you need to perform an object scan of your obj's for that build).

if your taken to the ModuleEntryPoint you can also just spelunk down the call chain (generally you want the second call/jmp), this gets you to the crt entrypoint, from there just look for a call with 3/5/4 args, this will be main/WinMain/DllMain:

from here:

Blackene.<ModuleEntryPoint> 004029C3                                   E8 FC030000                                             CALL Blackene.__security_init_cookie
004029C8                                                             ^ E9 D7FCFFFF                                             JMP Blackene.__tmainCRTStartup

we goto here:

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

then scroll down here:

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

I'm assuming ollydbg 1.10 is being used.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文