PC端游戏反外挂技术分析

外挂这个事情要追溯到 2000 年。当年星际争霸的开全图,CS 的透视、穿墙等,让游戏完全失去公平竞技性。当时反外挂的概念也呼之欲出。而后随着 PC 端网络游戏的崛起,就很少要有人再去玩或者谈起这些游戏,但是游戏外挂却跟随时代的脚步而不断前进。

游戏外挂让开发商很无奈

第一,外挂泛滥成灾,最直接的受害者是开发人员,不但知识产权被侵害,还得疲于奔命地应付各种外挂。

第二,外挂一旦导致游戏失衡,不管怎么努力,都无法挡住产品口碑变得越来越差,玩家不断流失。

第三,外挂往往会捆绑木马、植入广告等,存在盗取游戏账号、诱骗用户等安全问题。

第四,所有的现象交织在一起,导致了游戏收入不断萎缩,游戏公司生存状况恶劣。

外挂技术与游戏安全性分析

抵御逆向分析

除了少数通用性外挂(如键盘模拟外挂、通用加速挂)外,绝大部分外挂在制作前均需动态调试和静态分析游戏逻辑和数据,找到关键逻辑和数据的位置,才能对游戏进行修改,因此反调试和保护游戏逻辑是抵御游戏外挂产生的强有力的方式。

阻止外挂入侵

一但游戏关键逻辑与数据被黑客分析完成,接下来黑客会通过编程对游戏客户端进行修改,修改游戏进程常常通过一些系统函数如 ReadProcessMemory,WriteProcessMemroy ,或者通过向游戏进程注入 dll 等方式修改游戏内存,因此保护游戏内存和恶意模块扫描是进一步防止外挂和被动检查外挂的有效措施。

游戏反外挂先行一步

Virbox 反外挂系统针对游戏安全问题,采用静态保护和动态保护相结合的方式,抵御和打击外挂,为端游保驾护航,目前仅支持 Windows 系统。

静态保护(Virbox Protector)

Virbox Protector 是深思自主研发的虚拟机外壳,用于保护游戏的代码逻辑,强大的虚拟机保护以及为 Unity 游戏设计的独特的 Unity3D 保护,对游戏的逆向分析造成极大的阻碍,有效遏制外挂的产生。

➤ 代码逻辑保护

现代反编译工具日益强大,即使是 C/C++ 这类静态语言编译后的程序,也能将代码还原到与源代码相差无几。没有代码保护,游戏客户端的代码逻辑暴露,很容易被黑客发现攻击的位置,使外挂的编写成本变得很低。

Virbox Protector 可以通过混淆、虚拟机、代码加密等方式对游戏中指定的函数进行保护,保护后的代码无法自动还原,黑客分析混淆和虚拟化的指令需要超过原先几十上百倍的时间。对游戏客户端的关键函数进行保护,每次客户端更新,黑客都需要大量的时间重新分析被保护的代码。

➤ 内存校验

绝大部分外挂的高级功能,都采用“内存补丁”的方式对游戏模块进行修改,Virbox Protector 带有内存校验功能,能对游戏代码进行校验,防止被打补丁。(该功能目前不支持 Unity3D 游戏)

Unity3D 保护

Unity 游戏采用 C# 编写,相比于 C/C++ 开发的游戏,Unity 游戏更容易被黑客分析,使用 DnSpy、Reflector 等工具可以直接反编译 Assembly-CSharp.dll 中的代码,游戏代码中的变量与函数名清晰可见。

Virbox Protector 对 Assembly-CSharp.dll 中的方法都进行了加密,只有在该方法运行编译为汇编代码才解密,黑客无法通过 Dump 出原始代码。

动态保护(Virbox 反外挂引擎)

Virbox 反外挂引擎是一款驱动级进程保护系统。该系统结合了主动防御(反调试、内存保护、反注入、Hook 检测等)和被动防御(窗口检测、内存特征扫描等),动态地保护游戏进程。Virbox 反外挂引擎的主要功能如下:

➤ 反调试

编写外挂或者盗版补丁,首先要做的是使用调试器(如 OllyDbg、x64dbg、Windbg、 Cheating Engine 等)调试软件进程,分析关键代码逻辑和数据。Virbox 反外挂引擎对所保护的进程进行调试检测,并防止内核调试器(如 WinDbg)调试 Virbox 反外挂引擎自身,使各种调试器失效,对逆向分析过程造成了极大阻碍。

➤ 内存保护

黑客在分析软件时,除了调试之外,还会通过内存搜索(如使用 Cheating Engine)等方式定位关键数据的内存,另一方面,大部分外挂或是盗版补丁会通过另外的进程修改内存,Virbox 反外挂引擎通过驱动级内存保护,防止其它进程读写、修改被保护的进程,保证了被保护进程的安全。

➤ 反注入

修改进程内存,除了跨进程的内存访问之外,还可以通过注入 Dll 或者 ShellCode 的方式进行,Virbox 反外挂引擎通过内存保护和监控模块加载的方式拦截了绝大部分注入方式,并配合内存特征检测功能,拦截非法模块。

➤ 自保护

Virbox 反外挂引擎有心跳检测功能,检测 Virbox 反外挂引擎自身是否被摘除,并支持与软件本身进行强绑定,如果使用 Virbox 反外挂引擎 SDK 版,强烈建议使用 Virbox Protector 加强 Virbox 反外挂引擎自保护。

➤ 特征扫描

Virbox 反外挂引擎可以检测内存特征、窗口特征、模块特征、驱动特征(如 HideToolz, PCHunter, StrongOD 等),并且可以为开发商自定义特征库。

安全问题一定要引起重视,反外挂本身就是一个伴随游戏全生命周期的问题,你所碰到的问题也是其它游戏开发商碰到的问题,你先行一步,解决好反外挂的问题,可以领先其它开发商一大步。

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。

2019-10-30
PC端游戏反外挂技术分析
外挂这个事情要追溯到 2000 年。当年星际争霸的开全图,CS 的透视、穿墙等,让游戏完全失去公平竞技性。当时反外挂的概念也呼之欲出。

长按扫码 阅读全文