瞄一眼

 找回密码
 立即注册
查看: 263|回复: 14

[转发] 过驱动保护检测

[复制链接]

322

主题

346

帖子

58

积分

管理员

Rank: 12Rank: 12Rank: 12

积分
58
发表于 2020-3-29 10:47:52 | 显示全部楼层 |阅读模式

文章目录:

                 

01. 博文简介:

02. 环境及工具准备:

03. 分析 TP 所做的保护:

04. 干掉 NtOpenProcess 中的 Deep InLine Hook:

05. 干掉 NtOpenThread 中的 Deep InLine Hook:

06. 干掉 NtReadVirtualMemory 中的 InLine Hook:

07. 干掉 NtWriteVirtualMemory 中的 InLine Hook:

08. 干掉 KiAttachProcess 的 InLine Hook:

09. 干掉 NtGetContextThread 中的 InLine Hook:

10. 干掉 NtSetContextThread 中的 InLine Hook:

11. 干掉 DbgkpQueueMessage 中的 InLine Hook:

12. 干掉 DbgkpSetProcessDebugObject 中的 InLine Hook:

13. 干掉 Debug 清零:

                                            

                                            

共四篇,本篇为第一篇。

01. 博文简介:

                         

 

 

 

 

 

本篇博文仅仅是我对过 TP 保护所作的一个总结,里面没有啥高深的技术,

仅仅是 Hook 而已,并且只有些 InLine Hook 和 SSDT Hook 的代码,

这些对大牛而言都是小菜一碟,所以大牛们可以直接飘过咯 ^_^

然后就是关于本篇博文,估计会比较长,所以我会按照上面的目录分出来一,二,三,四篇相继发表。

                 

我先来装回逼科普下 TP 吧,直接从百度百科抄袭点过来:

TP 系统全称 TenProtect,是由腾讯自主研发推出的安全系统,可以有效保护游戏不受外挂侵犯,同时具备反木马盗号功能,

能有效的防止用户游戏帐号和虚拟财产被窃取。腾讯 TP 系统主要作用为外挂检测、反盗号、反非法工作室、防非法消息。

                 

具体功能如下:

反注入:TP系统能有效的阻止非法模块对游戏进行注入;

反加速:TP系统能防止游戏客户端的非法加速功能;

反模拟按键:TP系统能有效阻止模拟按键程序;

反脱机: TP系统能针对非正常登录游戏的行为进行检测;

反调试: TP系统采用内核级反调试技术,保护游戏进程不被调试和分析;

反木马: TP系统可以保护玩家帐号不被木马程序窃取;

检测外挂功能:TP系统能对外挂功能进行检测;

指令混淆: TP系统能对正常指令进行虚拟和变形,加大外挂作者逆向难度;

特征匹配: TP系统采用特征码匹配技术,能准确检测到外挂的使用;

文件校验:TP系统可以准确检测游戏目录下的文件是否被第三方程序篡改;

游戏内存数据校验: TP系统所特有技术手段可以准确感知到游戏关键数据的异常;

游戏进程保护: TP系统可以保护游戏进程不被第三方程序读写;

游戏虚拟财产保护: 在玩家因不当操作引起帐号泄漏情况下,TP系统也可以保护玩家帐号内虚拟财产不被不法份子转移;

                 

我几个日子弄了过 TP 的驱动保护,算下来前前后后也弄了半来个月,

虽然比较累,但还是收获了蛮多东西,这篇博文就是将如何过掉 TP 做的一个总结而已,

在这篇文章中我会一一介绍过掉 TP 所 Hook 的各种 API 的思路,并附上简要的代码,

在过 TP 驱动保护的过程中以及一些思路和一些代码也很大程度上都是来自国内的几大论坛,

主要是看雪,一蓑烟雨,DebugMan 等论坛,这里对我所借鉴的那些哥们说 Many Thanks。

同时也得特别感谢刘总,很多地方若没有刘总的指导,则还指不定何时能够弄出来呢。

                 

值得一提的是,我现在所做的过 TP 驱动保护只支持 32 位 XP,在所有的 32 位 XP 上都可以正常运行,

不过 Win7 的话还不行,因为里面用到了搜索特征码来定位未导出 API,而我只针对 XP 做了处理。

                 

免责声明:

此文仅作为技术交流,有心之人切记不要拿来做坏事,尤其是不要拿来做伤天害理,或者伤害企鹅利益的事情,

对于那些有心要做坏事的,则所有后果或者反正是坏的方面的责任都与我无关,

如果此文伤害了某些公司的利益或者之类的,请站内消息或者留言联系我,本人看到后会第一时间关闭此文。

                                

                                

02. 环境及工具准备:

                                

前面也提过了,此次过 TP 的驱动保护仅仅只适用于 XP 系统,所以,首先你得准备个虚拟机,

然后装个 XP 的系统,至于是 XP SP2 还是 XP SPxxx 就随便了,当然,如果你喜欢 BSOD 的话,

也完全可以装个其他的系统,然后的话,就得准备几个专业工具了,首先一个当然是 Xuetr 了,

不过 TP 能够检测出 Xuetr,所以 Xuetr 在 XP 机器上和 TP 同时运行时,

轻则导致 TP 弹出警告框,重则蓝屏,这个看个人运气了。

然后还有一个工具也很重量级,也是 Rootkit 检测工具,叫做 Kernel Detective,

并且更重要的是 TP 和 Kernel Detective 是可以并存的,不会像 Xuetr 那样会被 TP 检测出来,

不过 Kernel Detective 想比与 Xuetr 来说,Xuetr 能够扫描内核的 InLine Hook,这个很强大,

这两个工具都很重要,其次就是 WinDbg 和 OD 以及 CE 了。

至于 WinDbg 的话自然是用来调试 Windows 内核或者调试驱动程序了,

而 OD 和 CE 的话可以用来测试咱所写的驱动是否真正的有效果,也就是测试是否真正的过了 TP 保护。

最后就是开发环境了,我的是 Visual Studio 2010 + Visual DDK + WDK,这个可以随意搭建。

                                

                                

03. 分析 TP 所做的保护:

                                

如果真要分析 TP 所做的保护的话,还是比较麻烦的,不过好在各种论坛里面,各种前辈给指出了明路,

比如堕落天才有一篇极好的文章,不过这篇文章是 2010 年 12 月份的了,中间 TP 也不是吃饭的,肯定是有更新了,

(继续为堕落天才打广告)

文章名称:《散谈游戏保护那点事~就从_TP开始入手吧》

文章地址:http://bbs.pediy.com/showthread.php?t=126802

不过这篇文章的参考价值还是很大的,比如在 NtOpenProcess,NtOpenThread 等等系统服务的 Hook 上,

TP 也还是差不多的,也就是变化不大,甚至很多的代码都可以拿过来直接用,而至于 TP 更新的一些内核函数的 Hook 的话,

也可以从其他论坛里面找到一些,所以最主要的一点就是放狗搜索,放狗搜索到一些资料以后,

可以用 WinDbg 或者 Kernel Detective 来验证这个内核 API 是否真的被 TP 所干掉了。

具体的俺也不晓得要怎么说了,总结一句就是放狗搜索。

下面放出几张截图,我是用 Xuetr 进行扫描的,

201206090928164069.png 201206090928129180.png

04. 干掉 NtOpenProcess 中的 Deep InLine Hook:

                                

TP Hook NtOpenProcess 的直接效果就是咱在应用层里面调用 OpenProcess(DNF 进程) 失败,

并且在 OD 或者 CE 里面也根本找不到 DNF 游戏的进程,更别提什么打开或者附加了,

这使得咱根本对 DNF 无从下手。研究过 TP 的都知道,TP 在 NtOpenProcess 中是下了深层的 InLine 钩子,

这个也早已经不是什么秘密,各个论坛上的都知道,是 Hook 的 ObOpenObjectByPointer,

对于这个,可以使用 Xuetr 扫描内核钩子扫描出来(TP 对 Xuetr 好像敏感,在 XP 机上可能蓝屏)。

在一些简单的 InLine Hook 中,咱都是直接拿内核 API 的头 5 个或者头 7 个字节做 Hook,

这种 Hook 方式是很容易被干掉的,直接 SSDT Hook 就可以干掉,

对于用 SSDT Hook 干掉浅层的 InLine Hook 可以参考看雪上堕落天才的文章:

文章名称:《SSDT Hook 的妙用 - 对抗 Ring0 InLine Hook》

文章地址:http://bbs.pediy.com/showthread.php?t=40832

不过 TP 是做的 Deep InLine Hook,也就是 Hook 的是 NtOpenProcess 深层的地址,而不是函数头,

要想用 SSDT Hook 来干掉的话,除非自己重写 NtOpenProcess,否则很难干掉,

而且 TP 在对 NtOpenProcess 上还有检测,所以即使是重写 NtOpenProcess 也很麻烦,

因为在重写中也必须要绕过 TP 可以被 TP 检测到,从而弹出经典的 TP 警告框。

                                

在这里咱可以在 Kernel Detective 中看到它所做的 InLine Hook,

首先是启动 Kernel Detective,然后在 SSDT 子菜单中,找到 NtOpenProcess,

然后在上面右键,在右键菜单中选择反汇编当前地址,从而就会跳转到 NtOpenProcess 的反汇编代码中了,

由于我的电脑太烂了,开个虚拟机,再跑个 DNF,再主机里面开个 Visual Studio 的话,估计半天会没反应,

所以这里截图截的都是没有启动 DNF 的图,也就是在 TP 还没有进行 Hook 时候的截图,

对于电脑配置好的朋友,可以自己去测试,测试结果除了地址外,其他基本都是一样的,

游客,如果您要查看本帖隐藏内容请回复

0

主题

56

帖子

7

积分

韶华一笑间

Rank: 1

积分
7
发表于 2020-3-30 08:28:14 | 显示全部楼层
哦嚯~study~~~~~

0

主题

1

帖子

0

积分

韶华一笑间

Rank: 1

积分
0
发表于 2020-3-30 19:12:23 | 显示全部楼层
666

0

主题

19

帖子

2

积分

韶华一笑间

Rank: 1

积分
2
发表于 2020-3-31 15:03:18 | 显示全部楼层
哦嚯~study~~~~~666

0

主题

53

帖子

6

积分

韶华一笑间

Rank: 1

积分
6
发表于 2020-4-15 08:57:54 | 显示全部楼层
学习一下

0

主题

68

帖子

7

积分

韶华一笑间

Rank: 1

积分
7
发表于 2020-4-15 13:23:05 | 显示全部楼层
为何如此的优秀。。。。

0

主题

1

帖子

0

积分

韶华一笑间

Rank: 1

积分
0
发表于 2020-4-16 11:05:13 | 显示全部楼层
下载学习

0

主题

11

帖子

1

积分

韶华一笑间

Rank: 1

积分
1
发表于 2020-4-16 20:03:50 | 显示全部楼层
感谢分享

0

主题

5

帖子

1

积分

韶华一笑间

Rank: 1

积分
1
发表于 2020-4-21 11:22:14 | 显示全部楼层
哦嚯~study

0

主题

1

帖子

0

积分

韶华一笑间

Rank: 1

积分
0
发表于 2020-4-24 01:31:00 | 显示全部楼层
好好学习学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|瞄眼社区

GMT+8, 2020-5-27 12:59 , Processed in 0.273795 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表