在 lena151 RE 教程的第 5 部分中,我看到了硬件 BP。他的解释让我很难理解。
谁能解释一下什么是硬件断点以及我们何时需要使用它?
在 lena151 RE 教程的第 5 部分中,我看到了硬件 BP。他的解释让我很难理解。
谁能解释一下什么是硬件断点以及我们何时需要使用它?
简短的回答:
从用户的角度来看,软件断点只是为了指令,你可以设置多少就多少,而硬件断点是通用的,但是你只能同时使用其中的几个(通常是4个)。
TL,博士;
硬件断点由直接集成在 CPU 中的特殊逻辑电路实现,连接到
要设置硬件断点,请使用以下信息填充调试寄存器(通常由调试器间接):
您可能只针对少量地址执行此操作,这取决于硬件,常用数字为 2 到 6(例如,对于 x86,您可以设置 4 个硬件断点:地址被写入调试寄存器 DB0 到 DB3,而其他信息——适用于所有作为适当的位标志单独寻址 - 到DB7 寄存器)。
该电路监视对存储器(RAM 或 ROM)的每次访问,并将地址、长度和访问模式与调试寄存器中的值进行比较。如果它们一致,则电路发送 Halt 信号并且调试器中断被调试程序的执行。
所以硬件断点(HB)和软件断点(SB)的区别是:
在他们的数量:
在可用性方面:
在适用的内存类型中:
INT 3
观察指令的第一个字节所在的指令),所以它不能为只读存储器(ROM)中的指令设置断点,而在速度上(硬件总是比软件快,所以HB比SB快)。
例如,如果您知道内存中某个字符串的地址,并且您对何时读取它感兴趣,SB 不会帮助您,但 HW 会帮助您。
一些参考: