OD程序目录
plugin:存放OD所有插件
UDD:存放程序临时的数据,比如:程序注释、断点等
ollydbg.ini:存放OD自身配置的属性表
OLLYDBG.HLP:OD的帮助手册
OD断点
1.软件断点:
介绍:基于程序本身异常造成的断点,会改变汇编代码,默认把第一个字节改成int3(也就是cc断点)
- 原理:CPU执行到不能执行的代码触发一个异常,调试进行接收。
- 类型:执行断点、写断点、读断点
- 特点:选择多少个字节就是多少个字节的范围(数据窗口)
2.硬件断点:
介绍:基于CPU本身自带的属性造成的断点,使隐形断点,不会改变汇编代码
- 原理:CPU主动触发异常,调试器进行接收。
- 类型:执行断点、写断点、读断点
- 特点:指定性内存范围(数据窗口)
3.条件断点:
- 字符串断点:[STRING[esp+4]=="abc"]
- 寄存器断点:eax == 520(默认16进制)
- 内存断点:[STRING[esp+0x8]=="A7D7186546WQA15"]
消息机制:
- 载入程序 --> 按“W” --> 刷新、右键设置消息断点,比如:按钮事件等。
汇编修改:
- 按空格即可修改,也可以右键 --> 汇编
- 勾选nop填充,就是多余的字节会用nop填充(90 为一个字节)
数据转到:
- 空格复制地址,Ctrl+G转到对应地址(反汇编窗口、数据窗口、堆栈窗口)
- 在包含立即数或者是全局变量地址的地方右键 --> 数据窗口中跟随 --> 内存地址/立即数,会在下方数据窗口中显示(反汇编窗口和堆栈窗口同理)
OD常用快捷键
快捷键 | 描述 |
---|---|
F9 | 运行 |
F2 | 下软件断点 |
F8 | 步过 |
F7 | 步入 |
F4 | 运行到光标选择的那一行 |
Ctrl + E | 以二进制(十六进制)格式编辑所选内容。 |
Ctrl + B | 二进制搜索 |
Ctrl + G | 跳转到某一个地址 |
Ctrl + S | 搜索汇编命令 |
Ctrl + F | 查找命令代码 |
Ctrl + L | 搜索下一个,重复上一次的搜索内容 |
Ctrl + A | 分析当前模块的代码段 |
Ctrl + F9 | 使程序直接运行到子程序的结尾的位置停下来 |
Alt + F9 | 执行直到返回到用户代码段 |
空格 | 编辑汇编代码 |
注意:OD载入程序会优先断到系统入口点(系统入口点特征地址是7开头),如果不想载入到系统断点,可以在调试选项-->事件-->勾选主模块入口点。