工具栏
窗口切换
1.日志窗口(L):
2.模块窗口(E):查看每个模块的内存基址
3.内存窗口(M):查看每一个模块的段,所占用的内存区域
4.线程窗口(T):线程信息
5.窗口(W):查看程序的窗口句柄,窗口名,风格样式,回调函数等信息
6.句柄(H):
7.反汇编窗口( C):也就是我们的汇编代码显示窗口—很重要
8.补丁窗口(/):
9:堆栈窗口(K):可以查看调用堆栈,调试时堆栈回溯—很重要
10.断点窗口(B):所有的F2断点都显示在这里
11.参考( R):比如如果你显示了参考字符串,可以在这个窗口找到
12.run跟踪窗口
进行调试
1.直接调试:
拖拽方式:直接把文件拖拽到OD打开
菜单栏-文件-打开
2.附加调试:
可以调试正在运行的程序
3.设置为默认的调试器:
在程序崩溃的时候,能够接管程序,调试错误
4.调试DLL文件:
Dll一般不是作为独立的程序运行,所以也不能执行
OD能够独立的调试DLL,OD自己运行了一个程序,程序使用LoadLibrary加载DLL,然后可以调试DLL
OD主界面:
主要分为四个部分:反汇编窗口、寄存器窗口、内存窗口、堆栈窗口
数据窗口支持查看各种类型的数据:
常用的几种形式:
$ 十六进制 +ASC或者UNICODE的方式
$ 长整型中的地址的形式(识别IAT比较明确的形式)
$ 反汇编形式
常用功能快捷键
F2: 设置断点或双击HEX数据列
F8: 单步步过
F7: 单步步入,遇到CALL指令会进入其中,进入后会停在子程序第一条指令前
F4: 运行到选定位置,直接运行到光标所在位置暂停
F9: 运行,按下这个件如果没有设置相应断点的话,被调式的程序将直接开始运行
Ctrl+F9: 执行到返回,此命令在执行到一个ret指令时暂停
Alt+F9: 执行到用户代码
跳转地址
$ 在jmp或者call指令上按回车,跟踪进入
$ (+号)前进一步
$ (-号)后退一步
修改汇编指令
$ 双击反汇编窗口
$ 按下空格
修改内存,编辑二进制代码
$ Ctrl+E,不同窗口编辑不同地方
查找指令
$ Ctrl+F 搜索一条指令
$ Ctrl+L 搜索下一条指令
$ Ctrl+s 搜索多条指令
分析代码
$ Ctrl+A 分析代码
注释
$ 左键点击注释列
$ 右键点击注释,添加注释
$ 快捷方式 ---- 分号注释
添加标签
$ 只能给地址添加标签
$ 冒号(快捷方式)
查找指定地址
$Ctrl+G
$ 输入地址或者API函数名
$ 查找API地址
字符串搜索
$ 使用插件 ----- 中文搜索引擎
$ 右键—查看—所有文本字符串
重新启动程序
$ Ctrl+F2
内存窗口命令栏
$ dd +地址 看该地址内存
$ dp +MessageBoxA 定位API函数