吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 35389|回复: 63
收起左侧

[游戏安全] Dota2 国服 VAC系统分析

  [复制链接]
zadmg 发表于 2017-3-27 20:19
本帖最后由 zadmg 于 2017-3-27 20:23 编辑

DOTA2的反外挂检测上看,VAC并没有做太多的工作,更多的是做一些特征上报(进程、线程、线程模块),这也可能是由于dota2本身的安全性较高,并没有加载完整的VAC方案(如另一款V社游戏CSGO,从玩家反馈来看,还会对游戏窗口、以及DX函数是否被hook等进行检测,甚至在某些特殊服务器还会加载驱动,后续将对该游戏进行进一步分析)
VAC全称VALVE ANTI-CHEAT,是VALVE公司(V社)开发的一款反作弊系统,V社从不公布其具体内容,在网上几乎查不到其工作原理。
..
喜欢玩Steam最近。对你有帮助,给个热心就好
..


1. 文件结构以国服dota2为例,根目录下存放着steam平台相关的文件下载的游戏在steamapps\common中,如dota2游戏文件在steamapps\common\dota 2 beta\:
V社为dota2分别编译了32位版本和64位版本,根据操作系统决定启动32位还是64位程序:
(但其实64位系统也可以强制执行32位dota2,只要打开32位dota2.exe即可)从文件结构以及文件名来看,并未有VAC系统的痕迹,似乎都是游戏相关的可执行文件或资源文件(后面的分析发现在tier0.dll、tier0_s.dll、steamclient.dll中有安全方案)。挑选几个重要的文件,如dota2.exe,engine2.dll等,都没有主流的PE文件保护:
IDA
2. 启动进程steam启动为例(国服dota2只是把steam.exe换成dota2launcher.exe,只作为启动器),游戏拉起时会有如下进程:
Steamwebhelper是3进程启动,容易想到就是chrome的cef框架,从模块中马上就能得到验证:VAC系统有可能在这些进程中一个或多个之中 3. 驱动模块挂勾NtLoadDrv以及通过工具查看驱动加载,并未发现有驱动模块。 4. 调试器检测常规的调试工具如OD、CE可以附加dota2.exe,硬件断点、软件断点也同样可加可用,但在挂OD每隔一段时间或执行关键操作,如进入对局中等,调试器会断下来,发现是游戏主动抛出了异常,影响调试器工作:tier0.dll + 0x32A68,tier0_timestamp:0x58A60C70)
在另外一个模块tier0_s.dll也有同样的逻辑:tier0_s.dll + 0x11DA8,tier0_s_timestamp:0x58800BAE)
在调试器上忽略该异常代码就不会影响:
另外一些常规的调试器检测API也同样有覆盖,但对于当前各种OD插件来说根本没有意义:
该模块里还有一些主动触发中断的手段(如主动触发int3),但只有在检测到被调试时会主动触发异常,如果没检测到正在被调试,则不会触发:
(在过了调试器检测后上面代码没执行过,即使没过,也可以通过在调试器设置忽略int3异常)总的来说反调试方面做的比较基础,改一下调试器参数即可过(测试号测试1周并未封号)相关文件目录:根目录\tier0.dll根目录\steamapps\common\dota 2 beta\game\bin\win32\tier0.dll 5. 外挂特征监控作为反外挂系统最基础一个环节,相信VAC系统肯定不会漏下:A) 进程扫描Hook NtQuerySystemInformation等底层枚举进程的函数,发现dota2.exe每隔1s都会枚举一次进程,在有新进程出现的时候就回去读取该进程文件进行上报,如打开pchunter:
定位到代码位于steamclient.dll + 0x247AE0(steamclient_timestamp:0x5880156E),通过NtQuerySystemInformation(参数0x10 SystemHandleInformation)获取系统句柄:
成功后通过EnumProcess进行枚举:
另外发现steam本身也有类似的功能,同样引用了steamclient.dll:
最后通过NtCreateFile和GetFileInformationByHandle获取文件信息进行上报
B) 窗口遍历通过hook遍历窗口相关api,FindWindow、EnumWindows、EnumChildWindows发现并没有对窗口进行检测。C) 模块遍历通过hook遍历模块相关api,如NtQuerySystemInformation等发现并没有对本进程模块进行检测。D) 线程创建与前面的方法一样,通过hook常用的api进行分析,发现依旧没有检测线程,但是在后续的分析中,发现了另外VAC一个非常规的检测线程的手段,熟悉windows开发的同学应该知道,在有新的线程创建的时候,系统会对当前进程所有dll发送一个DLL_THREAD_ATTACH事件,VAC正是利用了这个特性,在stramclient.dll中处理这个事件,感知线程的创建,之后有如下操作:1) NtQueryInformationThread获取线程起始地址,定位到模块
2) 通过VirtualQuery、QueryWorkingSetEx获取线程起始地址附近的内存属性,虚拟页拓展信息、模块签名作为线程特征:
3) 根据线程起始地址读取模块信息,结合步骤2获取到的信息进行上报:
总的来说,VAC做了一些进程、线程、线程模块特征的上报,作为后台的一种判定(实际上会出现一些误判,玩dota2的时候经常就会弹VAC发现作弊、禁止开局的框,此时重启进程或电脑就正常)相关文件目录(dota2.exe以及steam.exe都是加载此dll进行检测):根目录\steamclient.dll 6. 内存完整性检测A) 代码篡改类型:通过给可执行代码下硬件断点(确认是否有通过读代码段校验是否被篡改),Hook游戏中UEF、VEH处理函数(确认是否有在页属性被破坏后感知异常并上报),发现dota2似乎并没有对代码进行校验。另外自己亲自修改目前外挂会修改的代码偏移(如networksystem.dll,steamclient.dll等),连续1周并未被封号(之前测外挂在1~2天就会被封)。 B) 异常接管类型(VEH、SEH、UEF捕获硬件断点等):分析发现并未有相关的外挂检测,但利用VEH、UEF捕获异常生成dump文件(tier0.dll. Tier0GenericMiniDumpHandler_SetOptions  tier0_timestamp:0x58A60C70):
7. 其他的一些分析从上面的分析上来看,dota2中的VAC系统并未有很多的工作,但VAC肯定不仅仅只有这些功能,尝试搜索一些字串,如VAC,发现resouce\souceinit.dat中有vac2.dll的字串,发现这个dat是一个标准PE文件,且从导出表来看,这个文件就是vac2.dll,但遗憾的是并没有加载到内存中(无论是LoadLibrary还是MapViewOfFile形式映射,在进程中也搜索不到相关的字串和代码)。
结.

点评

原帖:http://gslab.qq.com/article-258-1.html  发表于 2017-4-3 21:58
转载不注出处非常不厚道,刚看以为楼主吊炸天...然并卵  发表于 2017-3-28 22:14
从 游戏安全实验室 转载的 到现在还不标注来源?  发表于 2017-3-28 19:39
dota2现在有个严重的bug,直接把小兵拉到柱子上,破高地防御塔,四一分推稳赢  发表于 2017-3-28 03:33

免费评分

参与人数 20吾爱币 +15 热心值 +18 收起 理由
fruitg + 1 + 1 我很赞同!
xiaohhh + 1 + 1 我很赞同!
深眸中的花火 + 1 + 1 热心回复!
eversliver + 1 + 1 用心讨论,共获提升!
lrvy + 1 + 1 谢谢@Thanks!
叶子猪 + 1 我很赞同!
EA7_AY + 1 我很赞同!
landisland + 1 + 1 用心讨论,共获提升!
等待记忆中 + 1 + 1 谢谢@Thanks!
danwenwen + 2 + 1 可以看一下csgo的vac系统
wsmmsy + 1 + 1 我很赞同!
Bds1r + 1 干货!
your52pojie + 1 用心讨论,共获提升!
兰陵笑笑生 + 1 + 1 哥们我玩csgo的,希望出个csgo的辅助= =
Apocalypse -1 是作者?转载不表明地址?
qq137766355 + 1 很多hack 通过USB存储设备也可躲避VAC
R丨O丨T丨K + 1 + 1 看不懂,但是玩DOTA2
任其自然 + 1 + 1 用心讨论,共获提升!
wuhen574 + 1 + 1 我很赞同!
晓风、残月 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

vbhvhgh 发表于 2017-3-27 21:22
(*@ο@*) 哇~   真的厉害   (づ。◕‿‿◕。)づ
晓风、残月 发表于 2017-3-27 20:33
头像被屏蔽
wanghai123 发表于 2017-3-27 20:33
wuhen574 发表于 2017-3-27 20:34
看不懂,但好像很牛逼的样子
NaZio 发表于 2017-3-27 20:35
第一次这么前。。。。
落笔成殇 发表于 2017-3-27 20:38
我去 好复杂
Zekrom 发表于 2017-3-27 21:25
一直用超级助手拉高视距,没封~
宇宙小菜鸟 发表于 2017-3-27 21:30
对于菜鸟来说好复杂
白牙照我去战斗 发表于 2017-3-27 21:48
楼主这样的是真的大神
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-12-22 10:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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