首页
社区
课程
招聘
未解决 [求助]关于内核调试模式下硬件断点的疑问
发表于: 2019-7-17 20:38 3329

未解决 [求助]关于内核调试模式下硬件断点的疑问

2019-7-17 20:38
3329
用户层的调试器可以通过设置某个线程上下文中的R0~R7实现硬件断点。

我的疑问:
内核调试器(Windbg)的硬件断点是如何设置的?
我在windbg中对某个地址下硬件断点后,使用PowerTool工具可以查看到当前调试寄存器的值,这些值是从哪里来的?


谢谢各位老师!!



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 712
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
内核能直接读dr 寄存器啊
2019-7-18 08:51
0
雪    币: 1790
活跃值: (3785)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
楼主的PowerTool4.6能分享下吗? 支持WIN几? WIN10一直恶心更新,导致现在WIN10下没啥好的工具。
2019-7-18 10:35
0
雪    币: 1790
活跃值: (3785)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
“用户层的调试器可以通过设置某个线程上下文中的R0~R7实现硬件断点。”    硬件断点的实现机制内核和用户层没区别吧。 用户层是没法直接更改CPU的寄存器,所以是通过设置线程上下文对应的字段,然后线程被操作系统激活运行时会将线程上下文加载到CPU的对应寄存器上。 内核模式的硬件断点只不过比用户层更直接点吧。
2019-7-18 10:38
0
雪    币: 385
活跃值: (90)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
拍拖 楼主的PowerTool4.6能分享下吗? 支持WIN几? WIN10一直恶心更新,导致现在WIN10下没啥好的工具。
这个工具我也是在作者的QQ群(1125993)里面下载的,只支持x86的系统。
群里面也有x64的,我不知道能不能支持win10,你可以试试。
2019-7-18 11:51
0
雪    币: 385
活跃值: (90)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
拍拖 “用户层的调试器可以通过设置某个线程上下文中的R0~R7实现硬件断点。” 硬件断点的实现机制内核和用户层没区别吧。 用户层是没法直接更改CPU的寄存器,所以是通过设置线程上下文对应的字段,然后线 ...
恩,我也是这样想的。
有点疑惑,要是windbg是对系统内所有的线程设置的硬件断点,如果用户层的调试器,或者应用程序本身就已经对某个线程设置了硬件断点,此时的R0~R3已经存在数值了。
要是这个时候在用windbg下一个硬件断点,会不会把这个线程的R0~R3覆盖了,就出现问题了。
2019-7-18 11:58
0
雪    币: 1790
活跃值: (3785)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
       如果R0~R3已经有值,WINDBG肯定不会覆盖原有值的。 不过用户层设置的硬件断点应该对内核的硬件断点没有影响吧。 至少用户层的线程上线文环节中的硬件断点只影响本线程,如果想对进程有效,需要批量设置所有线程。  内核和用户层肯定不在一个执行环境下应该不会相互影响。 
       不过这里的确有个问题是我之前忽略了的,回去在去翻下书,验证下。
2019-7-18 16:00
0
雪    币: 240
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
我是发求助的 我的那个软件你也可以重写 不是非得用E语言  有意请与QQ1514953032联系  有奖励的1000yuan
2019-7-19 07:49
0
游客
登录 | 注册 方可回帖
返回
//