首页
社区
课程
招聘
[求助]多核CPU硬件断点的疑问
发表于: 2014-10-7 15:13 4437

[求助]多核CPU硬件断点的疑问

2014-10-7 15:13
4437
首先说我的目的,是想在自己的驱动里操作Drx寄存器,对某个内核全局变量下断点,然后定位到修改这个变量的关键代码。

首先说我知道对于多核CPU,IDT是保存在每个CPU的_KPCR结构中的,而对于内核线程,Drx是保存在每个CPU的_KPRCB结构的ProcessorState字段的SpecialRegisters字段

那么问题来了,我如果想下硬件写入断点,要怎么操作呢?
直接mov drx, xxx只是给处理当前线程的cpu的drx赋值了吧,我要对某变量下硬断,难道要修改全部cpu的_KPRCB吗?

最后关于定位关键代码,我只能想到hook IDT 1 号中断,然后在堆栈里找之前压入的eip值这个方法,感觉好麻烦……还有没有别的方法?比如像应用层GetThreadContext这样简单粗暴的函数啥的…………

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 615
活跃值: (580)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
偶也有这个想法,可也不知道怎么实现,貌似要参考下 内核单机调试器, 话说还有另外一个思路是,CR3,缺页方面的也可以想想
2014-10-7 16:46
0
雪    币: 615
活跃值: (580)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
哦,提醒下,关键代码找到了,你又能怎么样呢?  你又不能改它代码,人家有CRC校验的,不过可以这样,我们线程执行的时候,这个全局变量是这个值,敌方线程执行的时候,这个全局变量是那个值。
2014-10-7 16:59
0
雪    币: 28
活跃值: (34)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
呃……你在说什么………………
2014-10-7 17:35
0
雪    币: 228
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
印象中跟R3没是啥太大区别 就是由异常处理改成有INT1 处理而已
2014-10-7 22:17
0
雪    币: 28
活跃值: (34)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
直接用一个mov指令?
2014-10-9 18:13
0
游客
登录 | 注册 方可回帖
返回
//