手游外挂分析连载(一)

手游外挂分析连载(一)

来源:fairguard 发布时间:2022-03-22 16:07:25 点击数:

目前移动游戏市场上,有多方需求在促进着外挂市场的发展。随着外挂的升级、变化,Android 手游外挂也衍生出各种变种。

大体上外挂可分为两类:辅助和破解版,这两类外挂的区别在于:外挂的运行是否依赖于游戏客户端。辅助类外挂是需要结合游戏客户端运行的,而破解版则是可独立运行的非法客户端。

因此 Android 手游往往会面临着内购破解、山寨版本、破解版本等各种问题,这种破解外挂的存在不仅会影响普通玩家的体验,也会给游戏的收入和口碑造成不可挽回损失。

本文着重对一款破解类型外挂进行分析,同时提出了一些针对 Android 手游破解的防护措施。

一、破解版是什么

破解版是通过将游戏的安装包进行解包操作,再对游戏中的文件或者脚本进行修改并重打包,其重打包后的非法客户端则会以 “科技版” “辅助版”等形式再次发布到线上。

下图为某游戏破解网站的截图:

某游戏破解网站的截图

该网站作者对市面上多款游戏进行了破解修改,破解后的外挂效果图如下:

游戏破解

二、Android游戏破解外挂分析实例

下面针对某游戏破解网站上的一款破解外挂进行分析。

通过比对破解版游戏与原始游戏的安装包,可以看到外挂的安装包中新增了classes2.dex文件和libstub.so文件。

游戏破解对比

使用反编译工具打开外挂新增的classes2.dex文件, 可以看到破解外挂在游戏中添加了绘制外挂窗口的代码,如下图:

绘制外挂窗口的代码

外挂中还使用了java2c的技术,对外挂的实现代码进行了保护,这提高了游戏安全人员的分析难度。

外挂中还使用了java2c的技术

使用反汇编工具打开外挂新增的libstub.so文件,会发现外挂制作者是有意将外挂的核心代码放在Native层,就是为了避免外挂被游戏方检测到:

外挂功能实现的细节,就是通过对libil2cpp.so的一些核心函数进行hook操作。

对libil2cpp.so进行拦截修改,不仅可以获取游戏中重要的数据,还能修改游戏的功能逻辑,这会是非常危险的。综上所述结合多年游戏安全对抗经验,可以看出外挂的制作者的水平在不断提高,所以游戏厂商也是需要不停的提升自身游戏保护能力的。

针对类似破解版本,FairGuard采取了以下防护措施:

1. 从各个方面校验游戏的完整性。

FairGuard会对游戏的签名、游戏中的核心功能代码等多个维度进行校验,当发现存在数据异常的情况时,就会立即让游戏退出。

2. 深度加密游戏底层代码。

FairGuard会使用独创的无导出/无导入函数SO加壳方案,对il2cpp进行加壳。原始未加壳il2cpp.so有非常多的导出函数:

原始未加壳il2cpp.so有非常多的导出函数

加固之后无导出函数:

无导入函数效果图.png



丨结语

FairGuard 专注于游戏加固与反外挂,为 Unity / Cocos / UE 等引擎的游戏提供深度一体化加密保护方案。

目前产品已经被FunPlus、Garena、三七互娱、游族等多家头部公司采用。TapTap排行榜以及买量排行榜上亦有多个游戏使用。

产品咨询联系方式:

QQ:2079128588

微信:fairguard01

技术交流QQ群:1105310296

即刻体验FairGuard

即刻体验FairGuard

免费试用游戏游戏安全保护, 对接专业技术服务!

免费体验
首 页
产 品
方 案
客 服
帮助