寒假到来,又可以学习自己喜欢的东西啦,准备回顾一下学习过的逆向知识,算是回顾,也是重修,拾遗拾遗,非他所遗,己之所遗。
网上关于OD的知识很多,也很好,之所以自己要写一些是为了以后查询相对方便,也为了巩固自己的知识。以后如果有新内容的话可以及时补充。
废话不说,我尽可能简略又清楚的描述。OD是调试Ring3级程序的首选工具,本文以32位OllyDbg1.01为例。
一、OllyDbg界面
其实这是OllyICE的界面,也就是OllyDbg的汉化版。
①反汇编窗口
反汇编面板窗口显示被调试程序的代码,有4列,分别是地址(虚拟地址)、十六进制的机器码、反汇编代码和注释。在最后一列注释中显示了相关API参数或运行简表,非常有用。
在反汇编窗口的列中,默认情况下,双击可以完成如下操作:
地址列:显示被双击行地址的相对地址(相对当前执行的指令),再次双击返回标准模式。
十六进制机器码列:设置或取消无条件断点,对应的快捷键是“F2”键。
反汇编代码列:调用汇编器,可直接修改汇编代码,对应的快捷键是空格键。
注释列:允许增加或编辑注释,对应的快捷键是空格键。
②寄存器面板窗口
寄存器面板窗口显示CPU各寄存器的值,支持浮点、MMX和3DNow!寄存器。可以单击右键或窗口标题切换显示寄存器的方式。
③数据面板窗口
数据面板窗口以十六进制和字符方式显示文件在内存中的数据。最左边的列是数据在内存中的地址,中间一列是十六进制数,右边的是字符。要显示指定内存地址的数据,可在③处单击右键快捷菜单中的“转到”命令或“Ctrl+G”快捷键,打开地址窗口,输入地址。
④栈面板窗口
栈面板窗口显示栈的内容,即ESP指向地址的内容。做边是栈地址,中间是栈地址对应的数据,右边是注释。
⑤信息面板窗口
在进行动态跟踪时,信息面板窗口将显示与指令相关的各寄存器的值、API函数调用提示和跳转提示等信息。
二、OllyDbg配置
OllyDbg的设置在“选项”(Option)菜单里,有界面选项(Appearance)和调试选项(Debugging options)等。这些选项配置都保存在ollydbg.ini文件里。
1.界面设置
单击“选项”(Option)- >“界面选项”(Appearance)选项,打开界面选项对话框,单击“目录”(Directory)标签,设置UDD文件和插件的路径(为了避免出现问题,请设置成绝对路径)。
①UDD文件是OllyDbg的工程文件,用于保存当前调试的一些状态,例如断点、注释等,以便下次调试时继续使用。
②插件用于扩充功能。路径设置正确后,将插件复制到“plugin”目录里,相应的选项就会在OllyDbg的主菜单“插件”里显示出来。
2.调试设置
单击“选项”->“调试选项”,打开调试设置选项对话框,一般保持默认即可。其中“异常”选项用于设置让OllyDbg忽略或不忽略某些异常,建议这样做:
3.关联到右键快捷菜单
可以将OllyDbg关联到Windows资源管理器的右键快捷菜单里。关联后,当调试程序时,只需要在EXE或DLL文件上单击右键,就会出现“用OllyDbg打开”菜单项。想要实现关联,只需要先单击“选项”->“添加到资源管理器右键菜单”选项,再单击“调价OllyICE到系统资源管理器菜单”按钮。