硬件断点和DRx调试寄存器有关。从Inter CPU体系架构手册中,可以找到DRx调试寄存器的介绍。
DRx调试寄存器总共有8个,从DRx0到DRx7。每个寄存器的特性如下:
·DR0~DR3:调试地址寄存器,保存需要监视的地址,如设置硬件断点;
·DR4~DR5:保留,未公开具体作用;
·DR6:调试寄存器组状态寄存器;
·DR7:调试寄存器组控制寄存器。
硬件断点原理是使用4个调试寄存器(DR0,DR1,DR2,DR3)来设定地址,以及DR7设定状态,比如:对这个401000是硬件读还是写,或者是执行;是对字节还是对字,或者是双字。因此最多只能设置4个断点。
OllyDbg支持调试寄存器,其称为硬件断点。设置方法是在指定的代码行单击鼠标右键,执行设置断点、硬件执行命令。
硬件断点优点是速度快,在INT3断点容易被发现的地方,使用硬件断点来代替会有很好的效果,缺点就是最多只能设置4个断点。