首页
社区
课程
招聘
[求助]硬件断点跟cpu有关系的吗
2009-7-7 20:24 6768

[求助]硬件断点跟cpu有关系的吗

2009-7-7 20:24
6768
请问硬件断点到底是怎么回事?
他分为哪几种?
都是怎么实现的呢?
最迷惑的一个问题是硬件断点和cpu有关系吗?
不明白……
希望高手解答一下
谢谢了
我是超级大菜鸟
别笑我啊
哈哈

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞7
打赏
分享
最新回复 (5)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dasanlang 2009-7-8 14:28
2
0
你这个问题好大。我说不全,这里抛块砖。
我想楼主在问硬件断点,想必对软件断点有所了解。这里用对比法来解释一下。

断点,其实就是程序运行到某个指定的位置的时候,我们希望程序停下来,让我们看一下程序运行成什么状态了。从这个意义上说,硬件断点和软件断点的作用是相同的。比如我们想程序运行到地址为0x00401111的地方停下来,在0x00401111这个地方按f2(软件断点)和下硬件断点是一样的。

当然它们的实现方式是不同的。比如, 0x00401111这个地方本来的指令是 mov ebx, eax. 软件断点的实现是,直接把0x00401111的指令改成 cc ... cc其实就是一条指令,这条指令的意思就是"我是断点,马上停下来"。 因为这条指令已经在0x00401111这个地方,所以一旦执行到这里,程序就给中断了。

硬件断点的实现跟上面不一样。假如你在0x00401111这个地方下,CPU就把这个地址记下来,放到一个专用的寄存器里面,并打个记号说“有人要中断哟”。 然后每次运行指令的时候就检查一下,首先一看,“有人要中断”,然后就到账本上看一下,当前的地址是不是要中断的地址,如果是就断下来,不是就放过去。

这样比较的结果就是,软件断点比较主动,脑门上就贴着“我要中断”。而硬件断点就比较被动,非要CPU来检查,检查到了才中断。
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
seceret 2009-7-12 14:34
3
0
经过几天的资料整理现在明白许多了
看了你的解答
回答的很好很透彻!!!
谢谢你了~~~
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cfanlane 2009-7-13 17:15
4
0
学习了,了解了这类基础知识,,相当有用
雪    币: 576
活跃值: (1344)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
我是土匪 4 2009-7-13 21:49
5
0
这个问题如果你看了 加密与解密(第三版)的第31页,你就有答案了。

硬件断点和DRx调试器有关。DRx调试器一共有8个,从DR0到DR7,每个寄存器的功能如下:
DR0——DR3 调试地址寄存器,保留要监视的地址,比如硬件断点(这个就是为什么硬件断点最多只能有4个的原因)。
DR4——DR5 保留,未公开起具体作用。
DR6 调试寄存器组状态寄存器
DR7 调试寄存器组控制寄存器

硬件断点的原理是使用四个调试地址寄存器 DR0、DR1、 DR2 、DR3以及DR7设定状态。所以硬件断点最多只能有4个。

上述内容摘自 《加密与解密(第三版)》
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
seceret 2009-7-17 11:23
6
0
谢谢匪哥 啊
前几天刚买了本
正在看……
游客
登录 | 注册 方可回帖
返回