首页
社区
课程
招聘
8
[原创]对双机调试下KdDebuggerNotPresent标志位的研究
发表于: 2022-11-18 17:50 16545

[原创]对双机调试下KdDebuggerNotPresent标志位的研究

2022-11-18 17:50
16545

本人第一次发帖,不足之处请大佬们海涵

虚拟机:Windows7 x64

物理机:Windows10

研究时间:2022年7月-8月

前言

在研究过双机调试的时候,在各大论坛看过许多高手们发的帖子,其中有不少总结了双机调试下的标志位,也给出了相应的越过检测的方法。但是对于KdDebuggerNotPresent这个标志位的处理方法我并没有找到。同时,自己在使用大佬们给出的方法处理之后,仍然被检测出来,直接蓝屏。这让我确定现在版本的某游戏驱动一定检测了KdDebuggerNotPresent这个标志位。

验证是否检测KdDebuggerNotPresent

      全局变量nt!KdDebuggerNotPresent来标识是否存在内核调试器,在未启动调试模式下此值为1。

在对其他标志位处理好的情况下,直接在物理机的windbg中执行eb KdDebuggerNotPresent  1指令后运行,发现还是被检测到发生了蓝屏。重新启动挂上双机调试再次修改一遍看一下修改有没有成功


发现修改并没有成功。在Windows7中使用windbg启动本地内核调试,执行eb KdDebuggerNotPresent  1 查看发现修改成功了


但当我们在物理机的windbg执行break中断下来,在我物理机中的windbg中查看时发现KdDebuggerNotPresent为0。同时在Windows7的本地内核调试下查看也为0,说明这个值在双机通信的过程中被修改成0了。

通过查阅《软件调试》这本书,当接受到复位数据包后,目标机会自动将KdDebuggerNotPresent设置为0,现在我们彻底明白为什么第一次在物理机中清除KdDebuggerNotPresent 时失败了。

谁将KdDebuggerNotPresent清零

kdcom.dll是Windows 操作系统内核的调试模块,里面包含了大量的内核调试函数,例如:KdD0Transition 、KdD3Transition、KdDebuggerInitialize0、KdReceivePacket、KdRestore 、KdSave 等函数,这个DLL在系统引导时会被ntoskrnl.exe加载,还可用于Windows驱动开发调试。

用IDA加载kdcom,搜索KdDebuggerNotPresent,在KdReceivePacket这个函数中找到。F5查看KdReceivePacket的伪代码发现确实将KdDebuggerNotPresent清零了。


[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

最后于 2022-11-20 20:10 被DriverUnload编辑 ,原因:
上传的附件:
收藏
免费 8
支持
分享
赞赏记录
参与人
雪币
留言
时间
mb_yfioexda
为你点赞~
2023-8-22 10:52
DriverUnload
为你点赞~
2023-4-10 09:27
伟叔叔
为你点赞~
2023-3-18 00:32
唔Wydy
为你点赞~
2023-1-17 15:35
PLEBFE
为你点赞~
2023-1-10 16:27
Recar
为你点赞~
2022-11-21 20:26
tank小王子
为你点赞~
2022-11-19 19:30
sxpp
为你点赞~
2022-11-19 18:46
最新回复 (13)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
大佬分享一波源码学习学习呗
2022-11-19 22:24
0
雪    币: 63
活跃值: (738)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
找了好久,总算找到了个WIN7X64的了,我在WINDBG直接忽略异常可以吗,显示的异常是CODE0X95 WINDBG怎么设置忽略这个异常的
2022-11-20 00:53
0
雪    币: 2139
活跃值: (5079)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
最后一张图蚌埠了
2022-11-20 01:19
0
雪    币: 1098
活跃值: (598)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
穿越火线,日常鞭尸
2022-11-20 11:25
0
雪    币: 63
活跃值: (738)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
老哥我照你这样处理了1:KdDebuggerNotPresent。置为1。2:SharedUserData->KdDebuggerEnabled。置为0,显示的是2.3:断链了隐藏kdcom.dll。
还是蓝还有哪里没有处理的
2022-11-20 17:04
0
雪    币: 2047
活跃值: (1896)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
8
mb_kppjdiod 老哥我照你这样处理了1:KdDebuggerNotPresent。置为1。2:SharedUserData->KdDebuggerEnabled。置为0,显示的是2.3:断链了隐藏kdcom.d ...
在文章最后写了我的所有处理方法,你这处理不够肯定蓝啊。
2022-11-20 19:31
0
雪    币: 2047
活跃值: (1896)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9
会翻滚的土豆 大佬分享一波源码学习学习呗
源码已发,直接用肯定蓝屏,但是可以参考参考。
2022-11-20 20:03
0
雪    币: 647
活跃值: (595)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习学习感谢大佬分享
2022-11-21 20:26
0
雪    币: 148
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
感谢分享
2023-1-17 15:37
0
雪    币: 95
活跃值: (1066)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
大佬加个qq
2023-2-25 10:34
0
雪    币: 1989
活跃值: (4245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
写得好
2023-2-28 20:06
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册