首先说一下OllyDbg的界面,如下图所示
下面依次介绍:
- 反汇编面板:有四列,从左到右依次为:地址(Address),机器码(Hex dump),反汇编代码(Disassembly),注释(Comment)
- 信息面板:在进行动态跟踪时,信息面板窗口(Information window)将显示与指令相关的各寄存器的值,API函数调用提示和跳转信息提示等信息。
- 数据面板:显示程序在内存中的数据,第一列是数据所处的地址,第二列是数据的十六进制显示,第三列是对应的ASCII码显示。
- 寄存器面板:显示了CPU各个寄存器的值。
- 栈面板窗口:显示当前栈的数据信息,push入栈,pop出栈。栈用来进行参数传递以及保存变量。更详细的功能请参考《汇编语言》
如何使用OllyDbg开始调试程序
首先,设置OllyDbg的断点,让加载的程序在程序入口中断。运行OLLyDbg,单击“Options”-“Debugging options”选项,单击“Event”标签,一般设置于“WinMain”处。
加载一个程序有两种方式:
- 第一种是通过 GreatProcess 创建一个调试进程。单击菜单项“File”-“open”或按“F3”键打开目标文件,就调用 GreatProcess 创建了一个调试进程,OllyDbg 将收到目标进程所发送的调试事件信息,对其子程序的调试时间不予理睬。
- 第二种是将OllyDbg附加到一个正在进行的进程上,该方法通过 DebugActiveProcess 函数可以将调试器捆绑到一个正在运行的程序上的特点,如果执行成功,效果类似第一种方法。单击菜单项“File”-“Attach”,打开附加对话框,选中正在运行的进程,按下“Attach”,即可附加目标进程。这时,程序会在 Ntdll.dll 的 DbgBreakPoint 处。按下“F9”或“shift+F9”继续运行程序。
一些快捷键
快捷键 | 功能 |
---|---|
F7 | 单步步进,遇到call指令跟进 |
F8 | 单步步进,遇到call指令路过,不跟进 |
Ctrl+F9 | 直到出现 ret 指令时中断 |
Alt+F9 | 若进入程序领空,按下后可立刻返回应用程序领空 |
F9 | 运行程序 |
F2 | 设置断点(INT 3 断点) |