首页
社区
课程
招聘
[讨论]特别不理解为什么*P访问KdEnteredDebugger为什么要通过IoAllocateMdl
发表于: 2017-5-29 17:42 4804

[讨论]特别不理解为什么*P访问KdEnteredDebugger为什么要通过IoAllocateMdl

2017-5-29 17:42
4804

KdEnteredDebugger是内核全局变量对吧,直接就可以EXTERN后访问对吧。 为什么TP还要通过IoAllocateMdl方式去访问呢? 我看大家为了防蓝屏都是HOOK的IoAllocateMdl去将KdEnteredDebugger指向一个0。我特别就想搞懂原理,为什么TP不用直接全局变量获址方式去访问KdEnteredDebugger呢


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 12876
活跃值: (9352)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
因为直接使用VA访问可以被硬断捕获然后XX
2017-5-29 17:47
1
雪    币: 111
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hzqst 因为直接使用VA访问可以被硬断捕获然后XX
你的意思是默认全局KdEnteredDebugger是不能直接修改的,而他不是通过CR0方式修改的,而是通过IoAllocateMdl去过WRITEPROTECT修改的,这样理解对吗?
2017-5-29 18:17
0
雪    币: 111
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
hzqst 因为直接使用VA访问可以被硬断捕获然后XX
你指的VA访问是R3下访问?
2017-5-29 18:46
0
雪    币: 12876
活跃值: (9352)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5




style

你的意思是默认全局KdEnteredDebugger是不能直接修改的,而他不是通过CR0方式修改的,而是通过IoAllocateMdl去过WRITEPROTECT修改的,这样理解对吗?

MDL映射可以通过另一个虚拟地址访问&KdEnteredDebugger这个地址,避免了被windbg  ba  r4  KdEnteredDebugger跟踪到检测代码的尴尬,我这样说明白了吗

2017-5-29 20:13
0
雪    币: 615
活跃值: (765)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
1楼解释的很清楚,感谢一楼,
2017-5-30 08:43
0
雪    币: 2347
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
hzqst style 你的意思是默认全局KdEnteredDebugger是不能直接修改的,而他不是通过CR0方式修改的,而是通 ...
初衷应该只是MDL稳定  但是强行不被断VA访问的话  通过windbg下就死循环了  疯狂进入调试器
这里纠正说法:避免了被IDA断下跟踪到代码的尴尬
2017-5-30 09:59
0
雪    币: 111
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
ugvjewxf 1楼解释的很清楚,感谢一楼,
谢谢指点,明白了
其实就是*P防止反调试的一种方式:不让用户简单的直接通过调试工具下断VA地址而轻松的跟踪到*P访问KdEnteredDebugger的位置。
2017-5-30 12:28
0
雪    币: 111
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
空白即是正义 初衷应该只是MDL稳定 但是强行不被断VA访问的话 通过windbg下就死循环了 疯狂进入调试器 这里纠正说法:避免了被IDA断下跟踪到代码的尴尬
感谢空白,看空我很多关于*P的文章,帮助特别大
也终于明白了*P通过MDL的初衷了
2017-5-30 12:30
0
游客
登录 | 注册 方可回帖
返回