TenProtect(TP)驱动保护原理
过 DNF TP 驱动保护(⼀)
⽂章⽬录:
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开始⼊⼿吧》
⽂章地址:www.doczj/doc/0255a7ec19e8b8f67c1cb9df.html /showthread.php?t=126802
不过这篇⽂章的参考价值还是很⼤的,⽐如在 NtOpenProcess,NtOpenThread 等等系统服务的 Hook 上,
TP 也还是差不多的,也就是变化不⼤,甚⾄很多的代码都可以拿过来直接⽤,⽽⾄于 TP 更新的⼀些内核函数的 Hook 的
话,
也可以从其他论坛⾥⾯到⼀些,所以最主要的⼀点就是放狗搜索,放狗搜索到⼀些资料以后,可以⽤ WinDbg 或者 Kernel Detective 来验证这个内核 API 是否真的被 TP 所⼲掉了。具体的俺也不晓得要怎么说了,总结⼀句就是放狗搜索。
下⾯放出⼏张截图,我是⽤ Xuetr 进⾏扫描的,
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》
⽂章地址:www.doczj/doc/0255a7ec19e8b8f67c1cb9df.html /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 时候的截图,
手机移动充值卡对于电脑配置好的朋友,可以⾃⼰去测试,测试结果除了地址外,其他基本都是⼀样的,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论