0%

dbg的基本使用

前言:dbg是很好的调试工具

dbg的界面

我们将.exe的文件拖入dbg,下图演示的是32位的dbg。

QQ图片20240413201247

一共有四个窗口,分别是:反汇编窗口、寄存器窗口、数据窗口、堆栈窗口。

这里需要充分了解部分寄存器

esp寄存器:拓展堆栈指针寄存器,其指向的是当前栈空间的地址。

eip寄存器:指令拓展寄存器,其总是指向下一条要被执行的指令

标志位寄存器:ZF、OF、CF

基本的快捷键及功能

F2:下断点,指定断点的地址(断点是软件断点,与硬件断点有所区别)

F3:加载一个可执行程序

F4:执行程序到光标处

F7:单步步入

F8:单步步过

F9:直接运行程序,遇到断点暂停

Ctrl+F2:重新运行到起始处

Ctrl+F9:执行到函数的返回处

Alt+F9:执行到用户代码处

Ctlr+G:快速定位地址

相关概念

OEP(Original Entry Point):

程序的入口点。软件加壳一般隐藏了真实的OEP(或者使用了假的OEP),这时我们需要寻找程序真正的OEP,才可以完成脱壳。

IAT(Import Address Table):

在可执行文件中使用其他DLL可执文件的代码或者数据,称为导入或者输出。在脱壳或者加壳的部分中,导入表是什么关键的一部分。加壳要尽可能的破坏和隐藏原始的导入表;而脱壳刚好相反。

ESP定律法:

ESP定律的原理在于利用程序中堆栈平衡来快速找到OEP。由于在程序自解密或者自解压的过程中,不少壳会先将当前寄存器状态压栈,如使用pushad,在解压结束后,会将之前的寄存器值出栈,如使用popad(OEP就在附近)。因此在寄存器出栈时,往往程序代码被恢复,此时硬件断点触发。然后在程序当前位置,只需要少许单步操作,就很容易达到正确的OEP位置。