1 INT 3断点
当执行一个INT3断点时,该地址处的内容被调试器用INT 3指令替换了(但是OD隐藏了这个替换,不让我们看到),因其机器码是0xCC,也称为“CC断点”。程序执行到INT 3指令时会导致一个异常,OD捕获这个异常,停在断点处,并将断点处的指令恢复为原来的指令。“F2”或bp设置的就是这种断点。
- 特点:会断在该指令执行前。
- 优点:可以设置无数个这样的断点。
- 缺点:改变了原程序机器码,可能被程序校验, 导致下断后程序退出。
2 硬件断点
使用DR0-DR3调试寄存器设定断点地址,DR4和DR5 这两个保留,DR6 显示触发断点的是哪个DR寄存器和触发断点的原因,DR7的主要作用是规定DR0-DR4是否生效。最多设置4个硬件断点。
硬件访问/写入断点要在数据窗口中下断。硬件执行断点要在反汇编窗口下断,它是一次性的,中断后就会自动删除。顺便说一下,CE里“F5”下的断点默认也是硬件访问/写入断点。hr设置的硬件访问断点。hw设置的硬件写入断点。下硬件断点之前最好先让进程处于暂停状态, 否则可能会失败.“F7”,"F8"默认使用的就是硬件断点。
- 特点:会断在该指令执行后。
- 优点:速度快,不改变原程序机器码,不易被检测到。即使重启OD,硬件断点依旧存在。
- 缺点: