能力值:
( LV2,RANK:10 )
|
-
-
2 楼
你这个问题好大。我说不全,这里抛块砖。
我想楼主在问硬件断点,想必对软件断点有所了解。这里用对比法来解释一下。
断点,其实就是程序运行到某个指定的位置的时候,我们希望程序停下来,让我们看一下程序运行成什么状态了。从这个意义上说,硬件断点和软件断点的作用是相同的。比如我们想程序运行到地址为0x00401111的地方停下来,在0x00401111这个地方按f2(软件断点)和下硬件断点是一样的。
当然它们的实现方式是不同的。比如, 0x00401111这个地方本来的指令是 mov ebx, eax. 软件断点的实现是,直接把0x00401111的指令改成 cc ... cc其实就是一条指令,这条指令的意思就是"我是断点,马上停下来"。 因为这条指令已经在0x00401111这个地方,所以一旦执行到这里,程序就给中断了。
硬件断点的实现跟上面不一样。假如你在0x00401111这个地方下,CPU就把这个地址记下来,放到一个专用的寄存器里面,并打个记号说“有人要中断哟”。 然后每次运行指令的时候就检查一下,首先一看,“有人要中断”,然后就到账本上看一下,当前的地址是不是要中断的地址,如果是就断下来,不是就放过去。
这样比较的结果就是,软件断点比较主动,脑门上就贴着“我要中断”。而硬件断点就比较被动,非要CPU来检查,检查到了才中断。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
经过几天的资料整理现在明白许多了
看了你的解答
回答的很好很透彻!!!
谢谢你了~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
学习了,了解了这类基础知识,,相当有用
|
能力值:
( LV12,RANK:210 )
|
-
-
5 楼
这个问题如果你看了 加密与解密(第三版)的第31页,你就有答案了。
硬件断点和DRx调试器有关。DRx调试器一共有8个,从DR0到DR7,每个寄存器的功能如下:
DR0——DR3 调试地址寄存器,保留要监视的地址,比如硬件断点(这个就是为什么硬件断点最多只能有4个的原因)。
DR4——DR5 保留,未公开起具体作用。
DR6 调试寄存器组状态寄存器
DR7 调试寄存器组控制寄存器
硬件断点的原理是使用四个调试地址寄存器 DR0、DR1、 DR2 、DR3以及DR7设定状态。所以硬件断点最多只能有4个。
上述内容摘自 《加密与解密(第三版)》
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
谢谢匪哥 啊
前几天刚买了本
正在看……
|
|
|