INT 3 断点
常用断点,使用“F2”快捷键设置的就是 INT 3 断点。这类断点采用修改机器码的方式,将设断处的代码更改为 “CC”,当程序运行至设断处时,会抛出一个异常,OllyDbg会捕捉到这个异常,使得程序暂停,然后恢复程序机器码。INT 3 断点可以设置无限多个,但是由于 INT 3 断点更改了机器码,所以很容易被目标软件检测到。
硬件断点
硬件断点与 DRx 调试寄存器有关,在Intel CPU 体系架构手册中可以找到对 DRx 调试寄存器的介绍。
DRx 调试寄存器有八个(DR0 ~ DR7),每个寄存器的特性如下:
- DR0 ~ DR3 :调试地址寄存器,用于保存需要监视的地址,例如设置硬件断点。
- DR4 ~ DR5 :保留,未公开具体作用
- DR6 :调试寄存器组状态寄存器
- DR7 :调试寄存器组控制寄存器
简单来说,硬件断点是在 DR0 ~ DR3 中设置断点地址,DR7设置状态。因此最多设置4个硬件断点,当程序运行至所设定断点时,CPU会向 OllyDbg 发送异常信息,OllyDbg处理后,中断程序,让我们继续操作。所以硬件断点不会更改程序的机器码,具有比 INT 3 断点更高的隐蔽性。
设断方法:单击右键,选择 “Breakpoint” - “Hardware, on execution”
删除断点方法:菜单项 “Debug” - “Hardware breakpoints” 打开硬件断点面板,选择 “Delet