吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22063|回复: 116
收起左侧

[系统底层] 【原创】TP驱动保护分析系列一 定位TenProtect保护

    [复制链接]
lyl610abc 发表于 2021-4-24 20:14
本帖最后由 lyl610abc 于 2021-7-10 19:04 编辑

系列索引

【原创】TP驱动保护分析系列一 定位TenProtect保护

【原创】TP驱动保护分析系列二 代码定位内核函数

【原创】TP驱动保护分析系列三 SSDT定位内核函数


前言

很早之前就打算出一个TenProtect保护分析系列,一直鸽到现在

关于TenProtect研究过游戏安全的朋友们肯定不陌生,可谓是业界标杆

但再强大的保护也肯定有破绽,本着学习研究的目的,写下自己与TenProtect斗智斗勇的记录,也希望TenProtect能够更进一步


TenProtect保护分析

TenProtect简介

image-20210424200638170

TenProtect,是由腾讯自主研发推出的安全系统,可以有效保护游戏不受外挂侵犯,同时具备反木马盗号功能,能有效的防止用户游戏帐号和虚拟财产被窃取

腾讯 TenProtect 系统主要作用为:外挂检测、反盗号、反非法工作室、防非法消息

该系列不提供任何成品,伸手党可以退出了,仅供学习交流研究严禁用于任何非法途径

分析的环境

本人采用的分析环境为XP 32位,使用的为论坛的虚拟机镜像

首先32位驱动和64位驱动还是有不少差别的

WIN64引入了两个内核保护机制,KPP和DSE

  • KPP:循环检查几个重要驱动数据段和代码段是否被修改,如果被修改,则触发0x109蓝屏;防止内核修改
  • DSE:驱动签名强制,禁止加载不正确签名的驱动;签名验证

在WIN64上限于上面两个保护机制使得驱动保护相比XP环境下变得薄弱

本着学习和研究的目的,选择XP系统作为范例


研究成果图

研究成果放的是之前的截图,时间是:2021/2/25(懒得再搞一遍了)

可以看到OD可以正常地附加游戏(仅研究游戏的保护机制,本人没有参与过也不打算参与任何网游的外挂开发销售,勿扰!!!

过检测


TenProctect的保护

分析保护之前,首先要明确TenProtect提供了哪些保护

下面给出TenProtect的保护:

  • 针对Windbg的双机调试的保护
  • 针对打开进程的NtOpenProcess的保护
  • 针对读内存的NtReadVirtualMemory的保护
  • 针对写内存的NtWriteVirtualMemory的保护
  • 针对打开线程的NtOpenThread的保护
  • 针对附加进程的KeAttchProcess的保护
  • 针对附加进程的KeStackAttachProcess的保护
  • 针对附加进程的KeForceAttachProcess的保护
  • 针对恢复进程的NtResumeProcess的保护
  • 针对恢复线程的NtResumeThread的保护
  • 针对调试信息传递相关的DbgkpPostFakeThreadMessages的保护
  • 针对唤醒调试目标的DbgkpWakeTarget的保护
  • 针对调试权限标志的ValidAccessMask清零的保护
  • 针对调试对象的DebugPort清零的保护

上述的保护中,比较麻烦的为针对Windbg的双机调试的保护和针对调试对象的DebugPort清零的保护

前者需要了解双机调试的通信原理,后者需要了解DebugPort的作用并自建调试体系(干掉检测线程自然也行)

除开上述的保护,TenProtect还会对硬件断点进行检测,通过获取DR寄存器的信息来进行判断

可以通过Hook NtSetContextThread和NtGetContextThread 这两个和线程上下文相关的函数来实现绕过检测


如何获知TenProtect的保护

上面提到了如此多的保护,现在来说说如何知道TenProtect所作的保护

ARK

这里需要用到ARK(AntiRootkit),所谓的ARK就是反内核工具,ARK这种工具可以让我们得到系统内核的相关信息

常见的ARK工具有:

XueTr、IceSword、Wsyscheck 、Snipesword等


使用ARK分析保护

这里使用的ARK为XueTr

此次分析的游戏为QQ堂,算是个比较古老的小型游戏,但麻雀虽小五脏俱全,其TenProtect还是很强力的

打开游戏,等TenProtect加载完毕后再打开ARK:XueTr

SSDT HOOK

点击 内核钩子→SSDT

image-20210424145919788

可以看到SSDT被挂了两个钩子:NtReadVirtualMemory和NtWriteVirtualMemory

这里便是所谓的SSDT HOOK,关于SSDT HOOK 会单独开章节说明,这里不继续深入


Kernel Inline HOOK

点击 内核钩子→内核钩子

image-20210424150616548

可以看到有不少内容,前面几个Hook是虚拟机自带的,无须关注;只需关注底下的几个Hook

这里以最后一个Hook为例,即0x805D5832,使用Windbg查看其地址对应的函数

输入指令:

u 0x805D5832

u指令为查看指定地址的汇编指令,得到:

image-20210424152438980

可以看到该地址对应的函数为PsResumeThread,也就是说TenProtect在PsResumeThread的头部做了HOOK

这个时候会发现PsResumeThread貌似并不在前面给出的保护中,暂且不急,看看PsResumeThread和前面函数的关联

通过前面的XueTr可以得到,被Hook的文件为ntkrnlpa.exe,使用IDA打开ntkrnlpa.exe

然后通过ALT+T 搜索PsResumeThread

image-20210424170017027


得到:

image-20210424170119155


选中PsResumeThread函数后按快捷键Ctrl + X 查看交叉引用

image-20210424170323173

可以看到前面提到的保护:NtResumeThread、DbgkpPostFakeThreadMessages、DbgkpWakeTarget均调用了被HOOK的PsResumeThread

于是如果想要绕过保护则需要替换PsResumeThread函数,将其变成我们自己写的函数MyPsResumeThread

以此要Hook的函数为NtResumeThread、DbgkpPostFakeThreadMessages、DbgkpWakeTarget,而非PsResumeThread

其它内核钩子分析方法同上,这里不再赘述,这里只是简单地说明一下如何定位TenProtect所做的保护


其它保护

上面只分析了SSDT HOOK和Kernel Inline HOOK,肯定有人会想问ShadowSSDT和其它钩子呢

关于ShadowSSDT在以后的篇章也会详细说明,但该游戏并没有针对ShadowSSDT的保护,于是无须分析

除此之外,还有Windbg双机调试的保护、ValidAccessMask清零的保护和DebugPort清零的保护没有提及

因为这三个保护相对复杂一些,需要对调试体系有一定的了解才行,之后也会单独开篇章分析

总结

分析流程

  1. ARK工具扫描被改动的函数
  2. 确定被改动函数的交叉引用
  3. 确定需要绕过的函数
  4. 绕过函数

补充说明

此篇笔记主要说明了如何定位TenProtect的SSDT HOOKKernel Inline HOOK

关于相对比较复杂的Windbg双机调试的保护、ValidAccessMask清零的保护和DebugPort清零的保护 留作之后

定位之后才能有针对性地绕过,但这里的定位只是借助了ARK和Windbg两个工具定位的,真正想要写代码定位留作之后再作补充

这里先预告一下 通过代码定位内核函数的五种方法

  1. 特征码定位法,通过特征码定位到内核函数附近,然后加上偏移即得到内核函数地址
  2. 通过MmGetSystemRoutineAddress函数定位,该方法定位的函数有限制
  3. SSDT定位法,通过SSDT表的地址加上SSDT函数的偏移计算得到对应的函数地址,该方法仅可定位SSDT函数
  4. PE文件导出表扫描法,通过解析PE文件的导出表获得函数的地址,有关这一块可回顾PE文件笔记十四 导出表,该方法仅可定位导出的函数
  5. 符号表PDB解析法,通过解析PDB文件获得函数的地址

该系列的门槛可能较高,需要在对操作系统和调试机制有一定的了解的情况下学习

该篇的内容不算多,算是简单介绍了有关TenProtect保护的定位,后续会不断补充更新,有不足之处希望大家能指出


免费评分

参与人数 88吾爱币 +95 热心值 +84 收起 理由
killerlq2012 + 1 + 1 谢谢@Thanks!
Nattevak + 1 + 1 谢谢@Thanks!
songdongdong + 1 相当清楚,想搞懂TP试试能不能在wineHQ上使用或者绕过。
xiahhhr + 1 + 1 谢谢@Thanks!
爱喝果汁的大猫 + 1 + 1 学习
昊哥zero + 1 热心回复!
风吟ˇ + 1 + 1 用心讨论,共获提升!
razor40K + 1 + 1 我很赞同!
wh421 + 1 + 1 谢谢@Thanks!
wangxiaohong888 + 1 + 1 谢谢@Thanks!
John·Scott + 1 + 1 我很赞同!
zycode + 1 + 1 谢谢@Thanks!
后悔莫及 + 1 + 1 热心回复!
JJ啊 + 1 用心讨论,共获提升!
Tylerlover + 1 + 1 热心回复!
liuyuepiaoxue + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
今宵无眠 + 1 + 1 热心回复!
一合巧克力 + 1 + 1 用心讨论,共获提升!
z978768269 + 1 + 1 我很赞同!
dangducluan + 1 + 1 谢谢@Thanks!
aaa661179 + 1 + 1 谢谢@Thanks!
钟欣桐 + 1 + 1 我很赞同!
阿纯@ + 1 + 1 用心讨论,共获提升!
zhaooptimus + 1 + 1 用心讨论,共获提升!
国际豆哥 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Chenda1 + 1 + 1 感谢大佬的pe教程写的非常清楚明白,后续会跟上进度
tzblue + 2 + 1 谢谢@Thanks!
poisonbcat + 1 + 1 我很赞同!
CuteHamster + 1 + 1 热心回复!
0xdada + 1 + 1 谢谢@Thanks!
不爱everyone + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Valdoivre + 1 + 1 谢谢@Thanks!
azcolf + 1 + 1 热心回复!
暮成雪 + 1 + 1 我很赞同!
阳光肥肥 + 1 + 1 用心讨论,共获提升!
whc2001 + 2 + 1 牛逼,话说这样直接发出来真的不会被tx搞吗
5omggx + 1 + 1 用心讨论,共获提升!
第四个字符 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
767190 + 1 + 1 用心讨论,共获提升!
mdf3192078 + 1 + 1 谢谢@Thanks!
ncu.xxy + 1 + 1 我很赞同!
努力加载中 + 1 + 1 谢谢@Thanks!
Ushio小汐 + 1 我很赞同!
新手12138 + 1 + 1 我很赞同!
tomatobobot + 1 + 1 谢谢@Thanks!
yixi + 1 + 1 谢谢@Thanks!
p100200300 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
caiji1 + 1 + 1 我很赞同!
pdcba + 1 + 1 谢谢@Thanks!
孤独尽头是自由 + 1 + 1 热心回复!
pxl123 + 1 + 1 good
小脚jio + 1 + 1 热心回复!
晚辈小生 + 2 + 1 用心讨论,共获提升!
Passerby + 2 + 1 学习到了 今天又是增加知识的一天
lyslxx + 1 + 1 我很赞同!
52JAY + 1 + 1 热心回复!
rep3 + 1 + 1 用心讨论,共获提升!
WUYONGHAO + 1 + 1 热心回复!
asq56747277 + 1 + 1 谢谢@Thanks!
qaz003 + 1 + 1 哈哈。。终于等到了。。期待系列。。
rekaytang + 1 + 1 热心回复!
yixiong201 + 1 + 1 太厉害了,好想拜师傅啊
yzhappyzsx + 1 我很赞同!
gaosld + 1 + 1 热心回复!
gxkyrftx + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
深蓝浅蓝 + 1 + 1 用心讨论,共获提升!
fengbolee + 2 + 1 用心讨论,共获提升!
杨辣子 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
忆魂丶天雷 + 2 + 1 我很赞同!
debug_cat + 1 + 1 大佬就是牛····
挑战走狗 + 1 + 1 谢谢@Thanks!
天上飞来一只 + 1 热心回复!
ICEY + 2 + 1 太强了。
fcr0400101fcr01 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
YWM2017 + 3 + 1 膜拜大佬
舒默哦 + 1 + 1 用心讨论,共获提升!
苏紫方璇 + 3 + 1 用心讨论,共获提升!
moomoo + 1 热心回复!
sam喵喵 + 1 谢谢@Thanks!
zayn0905 + 1 + 1 用心讨论,共获提升!
lxtx666 + 1 我很赞同!
ffggddss + 1 坐等干货..
成熟的美羊羊 + 1 + 1 tql
huaaishangbing + 1 大佬牛皮抱大腿
hx66947218 + 2 + 1 谢谢@Thanks!
正己 + 3 + 1 热心回复!
Ps出来的小赵 + 3 + 1 膜拜大佬!!!
aswcy815174418 + 1 + 1 一键三连

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2021-4-25 16:15
图里QQT满满的回忆,期待这个系列可以更新下去,加精鼓励。
debug_cat 发表于 2021-4-25 09:41
个人觉得,还是不要发得这么详细吧。因为tx的人不知道会不会找你。因为泄漏了一些东西,比如用了xx保护。如果正好有人在搞,看到文章肯定深受启发。虽然作弊与保护是相爱相杀,相互促进进步。但是tx的东西这样分享,还是不太好。个人愚见
 楼主| lyl610abc 发表于 2021-4-25 10:05
莫问刀 发表于 2021-4-25 09:41
个人觉得,还是不要发得这么详细吧。因为tx的人不知道会不会找你。因为泄漏了一些东西,比如用了xx保护。如 ...

我分析的是很久之前的xp系统,和现在的保护还是有挺大区别的
而且我没有给出成品,只提供分析的思路,具体实现还是有一定门槛的
仅作交流研究应该是没什么问题的

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
满不懂 + 1 + 1 我很赞同!

查看全部评分

C-FBI-QM 发表于 2021-4-26 07:58
勘误:分析的环境节,KPP介绍的代码段释放被修改应为代码段是否被修改

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lyl610abc + 1 + 1 感谢指正

查看全部评分

aswcy815174418 发表于 2021-4-24 20:21
坐拥大佬
正己 发表于 2021-4-24 20:23
唔,大佬好可怕
天空の幻像 发表于 2021-4-24 20:32
厉害咯,学习一下
huaaishangbing 发表于 2021-4-24 20:32
大佬牛皮抱大腿
无闻无问 发表于 2021-4-24 20:53
快保存,快保存,此帖容易被封…
一江胡 发表于 2021-4-24 21:02
不明觉厉!
baiseh 发表于 2021-4-24 21:06
坐拥大佬
1188 发表于 2021-4-24 21:10
前排就坐,小本本记起,抓紧学习缩小差距
fightboy 发表于 2021-4-24 21:24
终于明白 那些搞黑产的  什么LOL防封  是怎么一个月赚几十万的了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-25 08:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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