首页
社区
课程
招聘
[原创]过某p反双机调试,目标游戏fkxd.
发表于: 2015-6-1 11:39 8180

[原创]过某p反双机调试,目标游戏fkxd.

2015-6-1 11:39
8180
写东西我真的不会啊,有些细枝末节,我真的讨厌讲所以有不明白的大家加我,QQ,2386847899。本人属于三无之人,有的是时间,求收留。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我就简单说说,检测的地方都有哪里。。。。
1. KiDebugRoutine ,KiDebugRoutine是函数指针,内核调试引擎的异常处理回调函数指针。当内核调试引

擎活动时,它指向KdpTrap函数,否则指向KdpStub函数。
2.KdDebuggerEnabled ,kdDebuggerEnabled变量不停的清零,清零的代码还做了检测,所以意味着不能轻易

修改*P的代码, kdDebuggerEnabled是windows全局变量,用来标识内核调试是否被启用
3.KdEnteredDebugger ,这也是用来标识内核调试是否被启用。
下面就来说说解决办法,对于第一个,既然检测KiDebugRoutine指向的函数,所以我们直接改他的函数他就

是over,所以我们可以想想从,它指向的函数的内部绕过,我用的是hook,KdpStub函数的办法,首先还没

开游戏之前咱们载入驱动,驱动怎么写,很简单,就是hook KdpStub 函数头,直接跳到,KdpTrap,因为我

们是debug模式启动,这时候,我们就把KiDebugRoutine指向的地址改为,KdpStub,然后我们下断点,发现

,依然可以正常使用。
第二个,我还是看别人的文章的,就是替换变量,简单讲就是哪里用到KdDebuggerEnabled,的时候我们就

,改为我们自己驱动的变量,然后,我们给值为1,但是,往哪里找到呢?,既然我们是调试,我们直接在

属于调试范畴的函数里面找,就在 KiDispatchException 这个函数里,总共有四处,我就懒得找了。
第三个,其实就是个标志,直接改为0,就行了。
这三处搞完,就可以吗?答案是,no。
大家可以想想,再看下面的解答。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

。。。。。。。。
好了,KdpTrap这个函数真是个阴险狡诈之徒,背着我们一直调用KdEnterDebugger对KdEnteredDebugger 变量清零,所以,解决上面的就可以双机调试了


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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 52
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这是NP的吧
2015-6-1 11:59
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
64位 怎么替换变量呢 亲
2015-6-1 16:12
0
雪    币: 44
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LZ你真牛
2015-6-1 19:33
0
游客
登录 | 注册 方可回帖
返回
//