2.1.1 OllyDbg界面
本节以OllyDbg 1.10讲述其用法,支持32位程序。OllyDbg发行版本是一个ZIP压缩包,只要将其解压缩到一个目录下,然后运行ollydbg.exe即可。打开目标程序后,OllyDbg会打开多个子窗口,单击菜单View或单击工具栏标签L、E、M等按钮可在各子窗口间切换,如图2.1所示。这些按钮依次对应Log窗口、Executable modules窗口、Memory窗口、Threads窗口、Windows窗口、Handles窗口、CPU窗口、Patches窗口、Call stack窗口、Breakpoints窗口、References窗口、Run trace窗口、Source窗口等。更多窗口请查看View菜单,各窗口功能请参考OllyDbg帮助文档的描述。
|
| 图2.1 窗口切换面板 |
默认的当前窗口是CPU窗口,它在OllyDbg中是最重要的窗口。调试程序的绝大部分操作都要在这个窗口中进行。它包括以下5个面板窗口:反汇编面板、寄存器面板、信息面板、数据面板、堆栈面板,如图2.2所示。
|
| (点击查看大图)图2.2 OllyDbg主界面 |
各窗口的外观属性,如标题栏(bar)、字体(font)等在右键菜单“Appearance”(界面选项)里控制。
1.反汇编面板窗口(Disassembler window)
反汇编面板窗口显示被调试程序的代码。它有4个列:地址(Address)、机器码(Hex dump)、反汇编代码(Disassembly)和注释(Comment)。最后一列注释栏显示相关API参数或运行简表,非常有用。
在反汇编面板窗口的列中(注:不是列标题),默认时,双击完成以下动作。
Address列:显示相对被单击地址的地址,再次双击返回到标准地址模式;
Hex dump列:设置或取消无条件断点,对应的快捷键是F2键;
Disassembly列:调用汇编器,可直接修改汇编代码;
Comment列:允许增加或编辑注释,对应的快捷键是“;”键。
要从键盘上选择多行,按下Shift键和上下光标箭头或者PgUp/PgDn键,也可利用右键菜单命令。按Ctrl键并按上下光标箭,一行一行地滚动汇编窗口(当数据与代码混合时,此功能非常有用)。
2.信息面板窗口(Information window)
动态跟踪时,显示与指令相关的各寄存器值、API函数调用提示和跳转提示等信息。
3.数据面板窗口(Dump window)
以十六进制和字符方式显示文件在内存中的数据。要显示数据,可单击鼠标右键“Go to expression”命令或按“Ctrl+G”键打开地址窗口,输入地址。
4.寄存器面板窗口(Registers window)
显示CPU各寄存器的值,支持浮点、MMX和3DNow!寄存器,可以单击鼠标右键切换或单击窗口标题切换显示寄存器的方式。
5.堆栈面板窗口(Stack window)
显示了堆栈的内容,即ESP指向地址的内容。堆栈窗口非常重要,各API函数和子程序等都利用它传递参数和变量等。