本文来自网易云社区。
手游已经超过端游,成为市场份额最大的游戏类型。对应的外挂产业也成长迅速,技术水准越来越高,对市面流行的手游引擎都有比较深入的研究。
现阶段如果一款游戏没有做任何保护,并且有数据放在本地计算的话,外挂从业者可以快速做出外挂。比较典型的案例就是旅行青蛙,这个游戏没有做任何保护,突然火了后,出现了各种功能多样的破解版。百度搜索破解关键词,结果有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站某二次元游戏,就是上文所说的存在脱机挂云刷的游戏,后来买了我们的保护。针对他们脱机挂的问题,我们专门为他们开发了反脱机功能。上线后云刷功能立马废了,并且上线至今没有人能够破解出反脱机算法。在反脱机功能和脚本函数级加密同时使用的情况下,也没有出现破解版。
网易云安全(易盾)提供iOS 应用加固和Android 应用加固服务,点击可免费试用。
本文来自网易云社区,经作者陈士留授权发布。
了解 网易云 :
网易云官网:https://www.163yun.com
网易云社区:https://sq.163yun.com/blog
新用户大礼包:https://www.163yun.com/gift
更多网易研发、产品、运营经验分享请访问网易云社区。