游戏逆向,是指通过各类工具对游戏进行反编译及源码分析,尝试分析游戏的实现逻辑的过程。这个过程需要使用解密、反编译、解压缩等技术,目的是还原或分析出游戏的代码逻辑及资源。
游戏逆向工具可以按照不同功能进行划分,如:动态调试注入工具 Frida ;静态分析工具 IL2CppDumper ;带有 APK 编辑、去除签名校验的功能 MT 管理器及内存修改工具 GameGuardian 修改器等等。
本文将通过案例对部分常见的游戏逆向工具实现原理进行分析,并提出解决方案。
◆ Frida
Frida 是一款动态插桩工具,可以将外部代码插入到原生 APP 的内存空间中,并进行动态调试与修改。
其注入原理是基于 ptrace 实现的,Frida 通过调用系统 ptrace 向游戏进程注入 frida-agent-xx.so 模块,通过这个模块与手机端安装的 frida-server 通讯,实现一系列分析与 hook 操作,如 hook 游戏中己方角色的攻击函数,实现“倍攻挂”等。
Frida 与 ida 联合调试APK
Frida 的配置环境简单、操作便捷,支持Java 层和 Native 层 hook 操作,并且使用 python、JavaScript 等 “胶水语言”,降低了逆向分析、作弊修改的门槛。
此外,Frida 拥有大量的变种及魔改版,如常见的 hluda-server 可以隐藏 Frida 特征,绕过传统的检测手段,加大检测排查难度。
◆ IL2CppDumper
众所周知,Unity引擎中有两种脚本编译器,分别是 Mono 和 IL2CPP 。IL2CPP 可以将游戏 C# 代码转换为 C++ 代码,然后编译为各平台 Native 代码。
在 IL2CPP 模式下,Unity 将 C# 代码中的类名、属性名、字符串等信息记录在 global-metadata.dat 文件,而 IL2CPP 启动时会从这个文件读取所需要的类名、属性名等信息。
破解者可使用 IL2CppDumper 解析 global-metadata.dat 文件,并将文件里的类名等字符串信息对应到 Native 代码中去,大幅降低了逆向分析难度。
逆向工具Zygisk-il2cppDumper界面及操作流程
随着对抗强度升级,Zygisk-IL2CppDumper 应运而生,可以在游戏运行过程中,动态dump函数名和函数偏移,绕过保护、加密以及混淆。
启动游戏后,会在目录下自动生成dump.cs,即使游戏有检测到异常闪退,也不影响dump.cs的获取。
Zygisk-IL2CppDumper采用github Action,仅需fork项目,填写包名等简单步骤就可逆向分析代码,极大程度降低了外挂、破解门槛。
◆ MT管理器
MT管理器是安卓平台上的逆向修改工具软件,拥有的双窗口文件管理和的 APK 编辑功能,可以高效地进行各种文件操作以及修改安卓软件。
MT管理器在获取 Root 权限后可访问系统目录,挂载文件系统为读写,修改文件权限和所有者。其主要功能为 APK 编辑,包含 DEX 编辑、XML 编辑、APK 签名、去除签名校验、RES 反资源混淆等。
MT管理器 Dex 编辑功能
以某游戏遇到的“内购破解”为例,破解者通过MT管理器去除游戏的签名校验,再搜索游戏支付渠道字符串进行定位,定位后用编辑功能篡改支付代码逻辑,最后进行重签名,就可实现无需付费即可购买游戏内的付费礼包。
破解者使用MT管理器实现内购破解
通过上述方式也可以对游戏内的人物攻击/血量/防御等数值进行修改,或对游戏胜负逻辑、付费逻辑进行篡改,从而制成带有一系列“变态”功能的破解版。
◆ GameGuardian修改器
GameGuardian,俗称GG修改器,可提供手动的内存搜索、修改功能,还支持脚本调用。调用脚本可实现定位、修改内存,达到自动破解的效果。
GG修改器调用lua脚本实现作弊功能
GG修改器的使用需要设备提供Root环境,哪怕Android 6.0后的系统不提供Root权限,破解者也会使用虚拟机、虚拟框架等模拟出Root环境,为修改器提供高权限。
除此之外修改器还具有反检测的功能,用来防止被游戏检测到,防护难度不言而喻。
GG修改器防检测功能演示
针对游戏面临的各类逆向攻击问题,FairGuard定制了一套成熟完善的解决方案,该方案已接入多款热门游戏并验证了出色的保护能力。
防破解功能
采用FairGuard业界独家技术「无API签名校验技术」,从底层出发,对游戏的引擎与代码进行加密处理,可以针对游戏包签名和文件完整性进行多重校验,防止游戏被植入恶意模块、剔除广告等。
反内存修改功能
针对游戏面临的内存修改风险,FairGuard潜心研发了「行为检测方案」,通过敏锐的智能感知系统,一旦检测到修改行为,可立即闪退,通杀各类修改外挂及其变种,做到有效防护。
主动识别恶意模块机制
区别于市面上其他安全产品,需要获取样本后进行外挂打击,FairGuard独家「主动识别恶意模块机制」对可疑模块进行主动识别,搭配在线打击功能做到主动防御,大幅缩短外挂排查周期。
反注入器功能
禁止使用Xposed、Frida等各种外挂模块注入器,防止注入后修改游戏内存等各种恶意行为,一旦发现立即闪退。
反调试功能
防止外挂作者对游戏进行调试,阻止对游戏的静态或动态分析,一旦发现立即闪退。
安全环境检测功能
不同于市面上其他产品,FairGuard加固采用更底层的检测手段,可精准识别虚拟框架、虚拟机、越狱、ROOT、云手机等各类风险环境,并提供个性化闪退策略。