手游外挂分析连载(一)

手游外挂分析连载(一)

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

      目前移动游戏市场上,有多方需求在促进着外挂市场的发展。随着外挂的升级、变化,Android 手游外挂也衍生出各种变种。大体上外挂可分为两类:辅助和破解版,这两类外挂的区别在于:外挂的运行是否依赖于游戏客户端。辅助类外挂是需要结合游戏客户端运行的,而破解版则是可独立运行的非法客户端。

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

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


一、破解版是什么

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

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

164697758695849075.png

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

164697761299284382.png


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

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

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

164697764896326078.png

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

164697767963409824.png

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

164697770378838784.png

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


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

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


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

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

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

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

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

导出函数.png


加固之后无导出函数:


无导入函数效果图.png

结语:

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

有兴趣的加QQ号:2079128588 或者微信 fairguard002 咨询

技术交流可加QQ群:1105310296


即刻获取  免费体验

即刻获取 免费体验

新注册游戏可享限时免费体验,包含安全加固、修改器闪退、变速器闪退等功能

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