新手入门Il2CppDumper:10分钟快速掌握Unity逆向工具使用方法
你还在为Unity游戏逆向时找不到合适的工具而烦恼?是否面对加密的global-metadata.dat文件束手无策?本文将带你10分钟掌握Il2CppDumper的核心使用方法,从环境搭建到高级配置,一站式解决Unity IL2CPP二进制文件的解析难题。读完本文你将能够:
- 正确配置Il2CppDumper运行环境
- 掌握命令行与图形界面两种操作方式
- 理解输出文件结构与实用场景
- 解决常见错误如"Metadata file not found"
- 定制化生成C++头文件与JSON分析数据
工具简介与工作原理
Il2CppDumper是一款针对Unity IL2CPP编译产物的逆向工程工具,能够从二进制可执行文件(如libil2cpp.so、GameAssembly.dll)和元数据文件(global-metadata.dat)中提取类型定义、方法签名和字段信息,生成可供逆向工具使用的辅助文件。
核心功能架构
flowchart TD
A[输入文件] -->|PE/ELF/Mach-O| B[二进制解析模块]
A -->|global-metadata.dat| C[元数据解析模块]
B --> D[代码注册信息搜索]
C --> E[类型定义提取]
D --> F[方法指针解析]
E --> F
F --> G[输出模块]
G -->|C++头文件| H[il2cpp.h]
G -->|JSON数据| I[script.json]
G -->|伪代码文件| J[DummyDll]
支持的文件格式
Il2CppDumper通过模块化设计支持多种平台的可执行文件格式:
- Windows:PE格式(
.exe、.dll) - Linux/Android:ELF格式(
.so) - macOS/iOS:Mach-O格式(
.dylib、.framework) - WebAssembly:WASM模块(
.wasm) - Switch:NSO格式(
.nso)
环境搭建与准备工作
系统要求
- 操作系统:Windows 10/11、Linux(Ubuntu 20.04+)或macOS 12+
- 运行时:.NET 6.0 SDK或更高版本
- 硬件:至少4GB内存(解析大型游戏时建议8GB+)
安装步骤
# 1. 克隆仓库
git clone https://gitcode.com/gh_mirrors/il/Il2CppDumper.git
cd Il2CppDumper
# 2. 构建项目
dotnet build Il2CppDumper/Il2CppDumper.csproj -c Release
# 3. 验证安装
cd Il2CppDumper/bin/Release/net6.0
./Il2CppDumper --help
必要文件准备
逆向Unity游戏需要两个关键文件,通常可在游戏安装目录中找到:
| 文件路径 | 典型位置 | 作用 |
|---|---|---|
global-metadata.dat |
Data/Managed/Metadata |
存储类型、方法元数据 |
libil2cpp.so |
lib/armeabi-v7a |
编译后的C++代码 |
GameAssembly.dll |
游戏根目录 | Windows平台可执行文件 |
提示:Android游戏需从APK中提取
lib/和assets/bin/Data/Managed目录;iOS应用需通过IPA解压获取可执行文件。
快速上手:3种启动方式
1. 图形界面模式(推荐新手)
Windows系统下直接双击Il2CppDumper.exe启动,将依次弹出文件选择对话框:
- 选择IL2CPP二进制文件(如
GameAssembly.dll) - 选择元数据文件(
global-metadata.dat) - 选择输出目录(默认为程序当前目录)
2. 命令行基础用法
# 完整参数格式
Il2CppDumper <binary-file> <metadata-file> <output-directory>
# 示例:解析Android游戏
Il2CppDumper libil2cpp.so global-metadata.dat ./output
3. 高级配置文件方式
创建config.json自定义输出选项:
{
"GenerateStruct": true,
"GenerateDummyDll": true,
"ForceIl2CppVersion": false,
"RequireAnyKey": true
}
使用配置文件启动:
Il2CppDumper --config config.json
输出文件解析与应用场景
成功运行后,输出目录将生成以下关键文件:
核心输出文件说明
| 文件名 | 类型 | 用途 |
|---|---|---|
il2cpp.h |
C++头文件 | 包含所有类型定义与函数声明,用于逆向工具类型重建 |
script.json |
JSON数据 | 方法地址与签名映射,可导入逆向工具生成函数名 |
DummyDll.dll |
伪程序集 | 包含类型骨架,用于dnSpy等工具查看类结构 |
stringliteral.json |
字符串数据 | 存储所有字符串字面量及其地址 |
实战应用案例:逆向工具函数重命名
- 将生成的
script.json与对应脚本复制到逆向工具插件目录 - 在逆向工具中执行File → Script file... → 选择对应脚本
- 工具将自动根据地址匹配并重命名函数,如将
sub_123456重命名为UnityEngine_UI_Button__OnClick
常见错误与解决方案
"Metadata file not found or encrypted"
可能原因:
- 元数据文件路径错误
- 文件被加密(如某些Unity保护方案)
- 二进制文件与元数据版本不匹配
解决步骤:
sequenceDiagram
participant U as 用户
participant T as 工具
U->>T: 选择错误的metadata文件
T->>U: 显示错误提示
U->>U: 验证文件魔术数(0xFAB11BAF)
U->>U: 检查文件大小(通常>1MB)
U->>T: 重新选择正确文件
"Can't use auto mode to process file"
当自动搜索失败时,工具会提示手动输入CodeRegistration和MetadataRegistration地址:
- 在逆向工具中搜索字符串"
g_CodeRegistration"找到代码注册结构地址 - 搜索"
g_MetadataRegistration"找到元数据注册结构地址 - 按提示输入16进制地址(如
0x1000A000)
版本兼容性问题
不同Unity版本的IL2CPP实现存在差异,可通过--force-version参数强制指定版本:
# 强制使用Unity 2020.3版本的解析逻辑
Il2CppDumper libil2cpp.so global-metadata.dat ./output --force-version 27
高级功能与定制化配置
生成C++头文件
通过修改config.json中的GenerateStruct选项为true,可生成包含完整类结构的C++头文件。结构体生成逻辑在StructGenerator.cs中实现,支持:
- 类继承关系建模
- 字段偏移计算
- 虚函数表生成
- 泛型类型特殊处理
JSON数据分析
script.json包含丰富的可用于自动化分析的数据:
{
"ScriptMethod": [
{
"Address": 16777216,
"Name": "UnityEngine_Application__get_version",
"Signature": "const char* UnityEngine_Application__get_version (UnityEngine_Application_o* __this, const MethodInfo* method)"
}
],
"Addresses": [16777216, 16777264, 16777312]
}
可通过Python脚本解析此文件实现批量操作:
import json
with open('script.json', 'r') as f:
data = json.load(f)
# 提取所有方法地址与名称
method_map = {
hex(item['Address']): item['Name']
for item in data['ScriptMethod']
}
print(f"共解析到{len(method_map)}个方法")
插件系统扩展
Il2CppDumper提供针对主流逆向工具的插件支持:
- Binary Ninja:
Il2CppBinaryNinja目录下的插件 - Ghidra:
ghidra.py与ghidra_with_struct.py - Hopper Disassembler:
hopper-py3.py
性能优化与大型项目处理
处理大型游戏(如《原神》、《崩坏:星穹铁道》)时,可通过以下方式提升性能:
内存优化配置
编辑config.json调整内存使用策略:
{
"NoRedirectedPointer": true,
"ForceDump": false,
"MaxDegreeOfParallelism": 4
}
增量解析技巧
- 首次完整解析后保留
il2cpp.h - 修改
config.json禁用已生成文件:
{
"GenerateDummyDll": false,
"GenerateStruct": false
}
- 仅重新生成
script.json用于地址更新
总结与进阶学习路径
通过本文学习,你已掌握Il2CppDumper的基本使用方法与常见问题解决策略。要进一步提升Unity逆向能力,建议:
- 深入学习IL2CPP内部结构:阅读
Il2CppClass.cs与MetadataClass.cs源码理解数据结构 - 逆向工具联动:结合Frida动态调试验证静态分析结果
- 自动化脚本开发:基于
script.json编写批量分析工具 - 关注版本更新:Unity新版本可能引入IL2CPP实现变化,需及时更新Il2CppDumper
Il2CppDumper作为Unity逆向的基础工具,其生成的文件质量直接影响后续分析效率。熟练掌握其配置选项与高级功能,将极大提升逆向工程的速度与准确性。项目持续维护中,遇到问题可通过GitHub仓库提交issue获取支持。
提示:定期查看项目
README.md获取最新特性说明,新版本可能已支持更多Unity版本与文件格式。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00