游戏如何对抗IL2cppDumper逆向分析

科技   2024-08-22 16:30   浙江  

众所周知,Unity引擎中有两种脚本编译器,分别是 Mono 和 IL2CPP 。相较于Mono,IL2CPP 具备执行效率高、跨平台支持等优势,已被大多数游戏采用。

IL2CPP 模式下,可以将游戏 C# 代码转换为 C++ 代码,然后编译为各平台 Native 代码。Native 代码提高了逆向/反编译难度,可有效提高外挂开发和游戏破解的门槛。

IL2CPP构建项目自动步骤图

虽然 Unity IL2CPP 在一定程度上提高了破解门槛,但并非没有弱点,市面上出现了不少针对性逆向分析工具,如 IL2cppDumper。

本文将着重分析 IL2CPP 模式下,游戏应该如何应对 IL2cppDumper 的逆向分析,并提供行之有效的解决方案。

首先,我们来了解一下,IL2CPP 是如何被破解的。

在 Unity IL2CPP 模式下,游戏逻辑是以 Native 代码运行, 但依然存在 C# 某些语言特性(如GC、反射),会将所有的 C# 中的类名/属性名/字符串等信息记录在 global-metadata.dat 文件中,IL2CPP 启动时会从这个文件读取所需要的信息。

IL2CPP.so 与 global-metadata.dat关系

正是这一机制为外挂制作与游戏破解带来了便利。破解者只需将游戏包进行解压,找到 libil2cpp.so 与 global-metadata.dat 文件,拖入input文件夹,运行一个命令行,即可完成逆向分析。

在未加密情况下 IL2cppDumper 可以解析出 .cs / .json 等文件

随后,可以将解析出的 dump.cs 文件拖入 Visual Studio 解析工具中,直接分析出源码:

使用 Visual Studio 可以解析出 .cs 文件中的代码


这样一来,游戏在破解者眼里无异于“裸奔”。破解者可以利用分析出来的代码逻辑制作各类功能的外挂,甚至制作破解版,会造成游戏公平性破坏,正常付费玩家大量流失,厂商收益直接受损等严重影响。

基于这种情况,FairGuard研发了一套完善的解决方案,支持Android/iOS/PC/鸿蒙多端,目前已接入多款热门游戏并验证了出色的保护能力,主要包含以下功能:


■ global-metadata.dat 文件加密

加密 global-metadata.dat 文件,同时做到对开发者透明。开发者只需使用加固工具运行一条命令行,即可实现加密,不需要上传额外文件。

■ libil2cpp.so 加壳

由于 IL2cppDumper 需要依赖 libil2cpp.so 对应 global-metadata.dat 文件中的字符串地址,所以对 libil2cpp.so 做深度加密非常有必要。

FairGuard独创的无导出/无导入函数SO加壳方案,对 il2cpp 进行加壳。效果如下所示:

FairGuard加壳后il2cpp.so,无导入/导出函数


在使用加密方案后,即使从内存中 dump 出来 libil2cpp.so , 依然不会被 IL2cppDumper 正常识别,效果如下图:


加密后IL2cppDumper无法解析


此外,FairGuard还提供反外挂防破解资源加密功能,与引擎加固功能紧密耦合,游戏保护效果更上一层楼。


反外挂功能

针对游戏将面临一系列外挂修改风险,FairGuard研发了行为检测方案,搭配300+维度的智能感知系统,可通杀各类外挂及其变种,做到有效防护。


防破解功能

采用FairGuard业界独家技术「无API签名校验技术」,从底层出发,对游戏的引擎与代码进行加密处理,可以针对游戏包签名和文件完整性进行多重校验,防止游戏被植入恶意模块、剔除广告等。


资源加密功能

FairGuard独家资源加密方案,支持Android、iOS、PC、H5、鸿蒙多端。可为游戏资源提供高强度加密保护,同时具备高兼容性、运行消耗小、性能无影响的特点,并且支持资源在线更新。




 点击 阅读原文 免费试用产品

FairGuard游戏加固
FairGuard游戏加固,业界领先的游戏安全服务商。自主研发多项独家技术,致力于帮助游戏公司解决外挂和破解问题,目前产品已被多家游戏大厂采用,接入500+款热门游戏。