首页
社区
课程
招聘
[原创]我也分享下过掉某P的双机调试
发表于: 2013-7-27 19:15 22772

[原创]我也分享下过掉某P的双机调试

2013-7-27 19:15
22772

某P更新了。对双机调试进行了校验。
一刀砍倒像我一样的小菜鸟。
迷迷糊糊的弄了几天。
特意在google上下载了一份NT 和2000的内核部分源代码
感谢yishenbiao和小烦的帖子给了我思路:
http://bbs.pediy.com/showthread.php?t=176159
http://bbs.pediy.com/showthread.php?t=176132
下面开始主题

yishenbiao在他的帖子里说了一句话
“我们没法改变某P的代码他现在是有效验。但是我们可以改变某P的数据或者寄存器的数。”
对,我们可以修改其的数据和寄存器的值。

某P调用KdDisableDebugger的代码我没有上了。
说下他会循环调用第二次调用KdDisableDebugger的函数。第一处是不会循环调用的,仅仅加载驱动时调用一次。

第一处判断是否调用KdDisableDebugger成功是KdDebuggerEnabled是否为0

第二处判断是KiDebugRoutine是否为KdpStub。

在IDA里面打开驱动文件,我们可以看到这么一句

mov     ecx, dword_1040508
test    ecx, ecx
jz      short locret_10093F3

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

收藏
免费 5
支持
分享
最新回复 (32)
雪    币: 118
活跃值: (27)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
hook NtDebugActiveProcess
调用ObReferenceObjectByHandle前
用eprocess->ObjectTable 改回去.

(winXP)
nt!_EPROCESS
   +0x0c4 ObjectTable      : 0xe1708f10 _HANDLE_TABLE
2013-7-27 19:21
0
雪    币: 167
活跃值: (190)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
支持楼主,一起努力打败TP
2013-7-27 20:59
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
其实为什么都去理会kddisableddebugger,xp下完全忽略。
2013-7-27 21:42
0
雪    币: 42
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
大神,是你开玩笑还是我电脑问题?。。。
我是XP系统 没过KdDisableDebugger完全不可调试
2013-7-27 23:25
0
雪    币: 42
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
谢谢大神指点,我去尝试一下
2013-7-27 23:26
0
雪    币: 42
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
嗯嗯 一起学习
2013-7-27 23:28
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
总之我调试时根本没去处理这个全局变量;在xp以上系统才去还原,也不用这么麻烦。
2013-7-28 09:14
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
顶楼主啊,就喜欢这样共享精神,一些人技术虽高可是人品极低,故意说的云里雾里让人迷惑**,另外debugport清零是很复杂CRC校验CRC,且不知道是CRC多还是动态执行,地址不固定,我找到的就有7,8个了,索性放弃想重载下内核,劝楼主也放弃吧,太麻烦了
2013-7-28 09:14
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
再教你们一招,只要把KdDisableCount设为非0,什么KdDisableDebugger就没用了。

这个从2K到WIN8都好使,不过要考虑这玩意整数溢出的情况,如果对方调得太多次(超过42亿次)就又有效了,如果真那么频繁,定期恢复一下1就可以了

其实方法很多的,看看KdDisableDebugger的实现就知道了,比如vista以上的,修改KdPitchDebugger啊,都可以轻松优美搞定KdDisableDebugger
2013-7-28 11:48
0
雪    币: 167
活跃值: (190)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
自己修改kddisabledebuggerwithlock 里的全局变量enable为自己的全局变量newenable  不行吗

让TP一直访问那个那个全局变量enable 判断去
如果TP不是获取这个全局变量的?  难道还是自己实现回调函数获取调试状态的?  

KdDisableCount不会也是全局变量吧。。。我再修改函数 替换为newKdDisableCount可以吗
以上全是扯淡 具体没试  
现在在学习撸obj type hook  没空撸tp 郁闷啊
2013-7-28 14:08
0
雪    币: 167
活跃值: (190)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
轻松优美是指不碰游戏保护  弓虽女干 自己的内核吧  我现在也想这么做
2013-7-28 14:12
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
替换newenable  就是我最早说的啊
2013-7-28 14:15
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
重载内核是最低端最不优美最没技术含量的做法了
2013-7-28 14:16
0
雪    币: 167
活跃值: (190)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
嗯嗯,你试过可行吗
2013-7-28 14:20
0
雪    币: 167
活跃值: (190)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
重载内核的话  时钟监视一直写HOOK怎么破?
2013-7-28 14:23
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
没有,我又不搞你们这个,提供一个简单思路而已
2013-7-28 14:34
0
雪    币: 50
活跃值: (171)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
如果只是是针对某P的附加反调试...其实只需要改某函数的某一个字节就可以...
2013-7-28 16:33
0
雪    币: 1088
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
19
标记一下.正在驱动入门中
2013-7-28 16:57
0
雪    币: 42
活跃值: (26)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
看了这么多大神回帖后,我发现我太差了。弄了个这么的办法。
请问是修改哪里的一个字节呢,学习下。谢谢。
2013-7-28 19:54
0
雪    币: 50
活跃值: (171)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
因为他设置的是dbgobjecttype的权限..而附加的时候出的错.所以可以考虑到的是ntdebugactiveprocess出的错..而参考wrk时.你会发现该函数的参数是进程句柄.以及dbgobject句柄...而根据句柄查阅具体对象时.调用的是ObReferenceObjectByHandle.所以.只需要处理这个函数就可以..
2013-7-29 08:09
0
雪    币: 55
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
请问大哥们 我按你这个代码 好不容易弄出来了 在调试器  也可以看到按正常的线路走 可是游戏一启动还是 没法 ctrl+break 双机端口用的 VirtualKD 郁闷2天了 小弟我是新新手 什么也不懂 是我理解错了 还是 。。。。看帮助是创建个新的线程 然后下个断 难道 还要还原NT的HOOK吗?
求指点 另外放一处从新启动的call 给大哥门 不知道我找的对不对    +4F74  5字节 全 90  能进到游戏 肯定还有别的位置!
2013-7-29 15:08
0
雪    币: 245
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
谢谢楼主分享
2013-7-29 15:09
0
雪    币: 134
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
tp一更新……大牛们群起而攻之
2013-7-29 18:46
0
雪    币: 70
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
把KdDisableCount设为非0,KdDisableDebugger是没用了,可是某P自己的代码还是把KdpStub给了KiDebugRutine啊,某P自己强制实现了KdDisableDebugger的功能,你把KdDisableDebugger作废了有什么用啊?我感觉还是要处理下某P
2013-7-29 23:11
0
游客
登录 | 注册 方可回帖
返回
//