手游破解手段介绍及易盾保护方案

达芬奇密码2018-08-02 09:22

手游已经超过端游,成为市场份额最大的游戏类型。对应的外挂产业也成长迅速,技术水准越来越高,对市面流行的手游引擎都有比较深入的研究。

现阶段如果一款游戏没有做任何保护,并且有数据放在本地计算的话,外挂从业者可以快速做出外挂。比较典型的案例就是旅行青蛙,这个游戏没有做任何保护,突然火了后,出现了各种功能多样的破解版。百度搜索破解关键词,结果有300多万条。

 

 

 

手游破解通常都从如下三个大方向来做:动态破解、静态破解、协议破解。


一、动态破解

不对包进行修改,而是使用外部工具进行外挂功能。

动态破解主要包含修改器和加速器。

1.修改器

修改器的原理是修改游戏内存数据,达到秒杀、无敌、攻、穿墙等变态技能。

目前最流行的是GameGuard修改器(也称作GG修改器)

下图是使用GG修改器修改三叶草数量的动画。可以通过修改器把三叶草的数量修改成9999

 

除了上面的手动操作,GG修改器还可以使用lua脚本操作,这样就大大降低了使用门槛,只要花上几十块买个脚本就免去了复杂而有难度的重复操作。使用界面如下图所示:

下图是某QQ群里售卖的lua脚本

 

GameGuard修改器除了数据修改功能外,还带有过游戏保护的功能。

腾讯自营和联营的手游统一使用腾讯自己研发的MTP游戏保护。MTP保护带有反修改器功能,检测到修改器后会让游戏退出。后来GameGuard修改器进行了版本升级,内置了pass腾讯MTP游戏保护功能,使得GG修改器能正常使用,并且在官方网站挂出如下视频:

 

2.加速器

加速器是比较常见的作弊工具。

同样拿旅行青蛙来做示例,使用效果如下,可以让三叶草快速成长。正常情况下,三叶草长满池子需要几天,加速后只需要几秒钟。

 

 

二、静态破解

也就是端改,玩家常常称这样的破解版为科技端。这种破解是通过修改游戏里面的文件或者脚本,然后重打包来实现各种功能。

端改常常被拿出来售卖或者工作室内部使用。端改的危害往往比动态破解更大。

现在破解版基本都是在QQ群售卖,只要使用游戏名+ “科技或者辅助  作为关键词搜索,就可以搜索到对应游戏的破解售卖群。

 

 

  1   

                                   

  2

1是崩坏3的搜索结果,图2是刺激战场的搜索结果。这两个游戏都有使用游戏保护,还是存在很多外挂售卖。可见现在的黑灰产的技术能力还是非常强的。

还是以没有保护的旅行青蛙做为案例,演示如何实现无限三叶草破解版本。

这个游戏是Unity3d引擎实现,首先使用CSharp反编译工具(dnSpy,ilSpy等工具)把如下图所示的DLL还原成源码

然后分析源码,定位到关键源码位置。如下图所示的获取三叶草数量的代码位置。

把源码修改成直接返回9999:

 

把修改后的源码再编译成DLL,替换原来的DLL,重打包成APK,运行后效果如下图所示,三叶草数量永久为9999,取之不尽用之竭。

 

 即使是没有保护的游戏,做破解版本还是有一定门槛的,需要一定的技术基础。不过在市场需求的驱使下,有多个平台APP提供破解版手游下载,如下图所示的GG大玩家和光环助手。

 

 

 

 

 


三、             协议破解

一旦游戏协议被分析出来,可以不再依赖于游戏本身,可以实现纯协议的客户端。或者是半脱机,修改游戏封包来修改游戏行为。

 

如下图比较热门二次元的游戏,使用的是http协议,可以使用Fiddler抓包来分析协议,并且修改协议封包。

这样的话,就可以搭建代理服务来动态修改封包,实现10倍血量10倍攻击等效果。相当于半脱机。下图是某论坛提供的免费脱机代理。

 

 

盾手游保护针对上述问题的解决方案:

一、动态破解

1. 修改器

通过对游戏进程的读写行为来识别修改器,可通杀所有修改器

2. 加速器

使用底层的方法判断是否存在加速。所有应用层方法都无法绕过我们的加速检测。

二、静态破解

游戏保护模块都带有文件校验功能,只要有文件被修改了游戏就不能正常运行,而端改又必须修改文件。

因此破解一般都要先把保护模块脱掉,使得破解后的游戏可不再依赖于保护模块运行。

基于上述原因,我们从两个角度来做保

1.       脚本保护

1)       Unity3d引擎提供函数级加密功能,并支持脚本在线更新。

2)       其它引擎提供对引擎模块的加固

2.       资源加密

1)       Unity3d引擎,我们提供assetbundle资源加密以及静态资源加密

       所有加解密算法,都经过我们精心构造和混淆,在确保性能和稳定性的前提下,让编译后的代码难以分析。下面是IDA分析的某个解密算法的流程图,其它加解密算法都是使用类似的方法构造。

 

三、脱机挂

针对脱机挂,我们提供了数据签名功能,客户端对输入数据进行签名,生成一个签名值。

如果破解者无法分析出签名算法,就无法模拟协议也不能篡改数据。

保护的核心在于客户端实现的签名算法在满足计算速度的同时,混淆要有足够的强度,使得分析者无法还原成源码算法。 

除了上述提到的方法,我们还提供如下的保护功能

1.  反地理位置模拟

2.  反模拟器

3.  反模拟点击

4.  反同步器

5.  防二次打包

6. 文件校验

7. 存档加密

8. 手游引擎SO定制化加壳

除了提供这些多样的保护功能,我们还着力于提升保护的易用性。保护的使用只需要运行一条命令行,将待保护apk做为输入,即可输出带有完整保护功能的APK。整个过程不需要开发做任何对接。

盾手游保护已经发布一年多,除了公司内部使用外,同时也对公司外部提供服务。目前已经有数十个外部用户,公司内部也有几十个手游在使用。

对于外部用户有三个比较典型的用户,在这里做一下分享。

1.  英雄互娱旗下某沙盒类游戏,存在很多修改器和加速器

我们给他们配置了反修改器和反加速器选项,并且对脚本做了函数级加密,对U3D Assetbundle资源做了加密。加固版本上线后,游戏运营反馈用户外挂举报立马减少了99%。使用保护至今已经快一年,还没有出现过破解版。

2.  B站某二次元游戏,就是上文所说的存在脱机挂云刷的游戏,后来买了我们的保护。针对他们脱机挂的问题,我们专门为他们开发了反脱机功能。上线后云刷功能立马废了,并且上线至今没有人能够破解出反脱机算法。在反脱机功能和脚本函数级加密同时使用的情况下,也没有出现破解版。

本文来自网易实践者社区,经作者陈士留授权发布。