Il2CppDumper:30分钟搞懂 Unity IL2CPP 游戏逆向的完整流程
2026/8/27 1:55:38 网站建设 项目流程

Il2CppDumper:30分钟搞懂 Unity IL2CPP 游戏逆向的完整流程

【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper

你是不是也遇到过这种情况:拿到一个 Unity 游戏,代码全被 IL2CPP 编译成了 C++,dnSpy 之类的 C# 反编译器直接失灵,想看看游戏里有哪些类、哪些方法,却无从下手。Il2CppDumper 就是干这个的——它从游戏二进制和 global-metadata.dat 里把类、方法、字段结构还原出来,让你不用读 C++ 也能看懂 IL2CPP 游戏的骨架。

🎮 什么场景下你会需要它?

假设你在做这几件事中的任意一件:安全研究某个手游,想知道内购校验逻辑藏在哪;学习某款游戏的架构设计;或者给游戏做 Mod,需要确认哪些 MonoBehaviour 脚本可以挂钩。只要目标是用 IL2CPP 打包的 Unity 游戏(现在主流商业手游基本都是),而你手头只有 libil2cpp.so、GameAssembly.dll 这类二进制加一个 global-metadata.dat,传统反编译路线就走不通了——IL2CPP 把 C# 转成了 C++,运行时类型信息散落在二进制里。Il2CppDumper 的活儿就是把这两份文件对上,还原出完整的类型定义,相当于给逆向工作"画好底图"。

⚡ 三步跑通:从克隆到拿到结果

第一步,把项目克隆下来并编译(需要 .NET 环境):

git clone https://gitcode.com/gh_mirrors/il/Il2CppDumper

进入目录后执行dotnet build -c Release,编译产物在bin/Release/下。

第二步,准备好两个输入文件:IL2CPP 可执行文件(Windows 上是 GameAssembly.dll,Android 上是 libil2cpp.so)和 global-metadata.dat(在游戏的 Assets 目录下)。

第三步,一条命令搞定:

Il2CppDumper <可执行文件> <global-metadata.dat> <输出目录>

跑完你就在输出目录里看到 DummyDll(还原出的 DLL 集合,可用 dnSpy 或 ILSpy 打开)、dump.cs(文本版类型清单)、il2cpp.h(结构体头文件)和 script.json。整个过程通常一两分钟,省掉的是手动翻二进制找类型的那大半天。

🧰 它能帮你做的事,一张表说清

能力对你的价值
完整还原 DLL 结构(除代码外)直接看到所有命名空间、类、方法签名,定位 MonoBehaviour 和 MonoScript 用
支持 PE、ELF、ELF64、Mach-O、NSO、WASM 六种格式Windows、Android、iOS、Switch、Web 端的游戏通吃
覆盖 Unity 5.3 到 2022.2老游戏新游戏都能处理
生成 IDA、Ghidra、Binary Ninja 脚本把类型信息直接灌进反汇编器,函数不再是裸地址
输出 il2cpp.h 结构体头文件分析 C++ 层结构体时字段布局一目了然
支持 Android 内存 dump 的 libil2cpp.so文件被保护时也能绕过,靠配置项 ForceDump 和 NoRedirectedPointer 识别 dump 文件

🕳️ 三个高频报错,现象→原因→怎么办

报错:Metadata file supplied is not valid metadata file

原因:你选错了文件,或者游戏对 metadata 做了加密混淆。这不是工具的问题,文件本身不是标准格式。处理:确认你选的是 Assets 下的 global-metadata.dat 而不是别的文件;如果是 Android 游戏且设备已 root,可以配合 Zygisk 类方案在内存里抓未混淆的文件再喂给它。

报错:This file may be protected

原因:可执行文件本身上了保护,静态特征被改掉了。处理:用 GameGuardian 这类工具在游戏运行时从内存里 dump 出 libil2cpp.so,再用 dump 文件跑,大多数保护就绕过去了。如果 dump 文件识别指针有偏差,把 config.json 里的 NoRedirectedPointer 设为 true 再试。

报错:Can't use auto mode to process file, try manual mode

原因:自动定位注册函数的算法失败了,常见于版本较老的 il2cpp 二进制或选错了可执行文件(记得 PC 平台应该选 *Assembly.dll,别拿错了)。处理:先确认文件没选错;确实过不去的话,程序会提示你手动输入 CodeRegistration 和 MetadataRegistration 两个地址,在 IDA 里搜一下符号就能找到;另外 config.json 里的 ForceIl2CppVersion 可以强制指定版本号来切换解析器,对付那些"版本识别不准"的老游戏。

🔭 想深入一点,往哪看

如果你不满足于"会用",几个方向值得走:

  • 理解解析原理:核心逻辑在 Il2Cpp/Il2Cpp.cs 和 Il2Cpp/Metadata.cs,前者负责在二进制里定位代码注册表,后者负责解析 metadata 版本格式,两个文件读下来,IL2CPP 的运行时结构基本就通了。
  • 扩展文件格式支持:所有平台格式解析都集中在 ExecutableFormats/ 目录,每种格式一个类。想加一种新平台的可执行格式,照着现有类的结构走就行。
  • 定制输出:dump 哪些信息(方法、字段、属性、偏移)全由 config.json 控制,想往脚本里加新字段,改完配置再看 Outputs 目录下的生成器就知道数据流到哪一步了。
  • 配合下游工具:还原出的 DummyDll 可以直接喂给 ILSpy 看类型,script.json 则被 ida.py、ghidra.py 等脚本消费,把 Il2CppDumper 当"前端"、反汇编器当"后端",是完整分析链路的常见组合。

收尾

Il2CppDumper 的定位很清晰:它不替你反编译代码,但能把 IL2CPP 游戏最难的"类型地图"一次性画出来,之后无论是看结构、挂脚本还是过保护,你手里都有据可依。找个你手头的 Unity IL2CPP 游戏,把两个文件丢进命令行,十五分钟后你就能翻出它全部的类清单——先试一次,比读十篇教程都管用。

【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询