尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Il2CppDumper 实战教程:3 步跑通 Unity IL2CPP 分析,从 GameAssembly.dll 到 il2cpp.h

Il2CppDumper 实战教程:3 步跑通 Unity IL2CPP 分析,从 GameAssembly.dll 到 il2cpp.h Il2CppDumper 实战教程3 步跑通 Unity IL2CPP 分析从 GameAssembly.dll 到 il2cpp.h【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper拿到 GameAssembly.dllILSpy、dnSpy 全打不开——IL2CPP 编译的产物里根本没有 IL 字节码。Il2CppDumper 做的事很直接拿 IL2CPP 二进制加 global-metadata.dat 当输入吐出能开 DummyDll、il2cpp.h以及现成的 IDA/Ghidra 脚本。Il2CppDumper 到底解决什么问题普通 C# 编译等于把菜谱IL交给运行时照着做反编译器读的是菜谱原件。IL2CPP 则先让厨师把菜谱重写成机器码级的操作手册再上灶——反编译器只能读菜谱读不了操作手册。但配料表global-metadata.dat没变Il2CppDumper 就是靠这张配料表去反推二进制里每个类型、每个方法的位置。挑战解决思路反编译器打不开 IL2CPP 二进制不反编译从 metadata 重建类型结构输出 DummyDll类型、方法信息散落在原生代码里从 global-metadata.dat 提取 TypeDef/MethodDef关联二进制函数地址未知IDA 里找函数费时自动搜索 CodeRegistration生成重命名脚本PE / ELF / Mach-O / NSO / WASM 格式各异按文件头 magic 自动分派到对应解析器核心解析逻辑在 Il2Cpp/ 目录各格式的解析实现放在 ExecutableFormats/。安装 Il2CppDumper 与首次运行整个过程就是三步克隆、编译、找到可执行文件。git clone https://gitcode.com/gh_mirrors/il/Il2CppDumper进项目目录用 .NET CLI 编译项目同时支持 net6.0 和 net8.0dotnet build -c Release产物在bin/Release/net8.0/下Windows 上是Il2CppDumper.exeLinux 上直接叫Il2CppDumper旁边会有它要读的config.json。Windows 下不带参数直接双击运行会弹出文件选择框其他系统不带参数运行则打印用法提示传参数才是正常姿势Il2CppDumper executable-file global-metadata output-directory前两个是文件第三个是目录顺序不限程序自己会按文件头区分哪个是 metadata、哪个是 IL2CPP 二进制。一次完整实战dump 一个 Android 手游目标是某款 Android 游戏从 APK 解出两个文件lib/arm64-v8a/libil2cpp.so和assets/bin/Data/Managed/Metadata/global-metadata.dat。先确认文件没拿错用十六进制编辑器打开.dat开头 4 字节应该是FAB11BAF这是 metadata 的 magic程序就靠它识别。然后建一个输出目录比如dump/执行Il2CppDumper libil2cpp.so global-metadata.dat ./dump控制台按这个顺序走打印Metadata Version和Il2Cpp Version接着Searching...自动定位注册函数然后Dumping...开始落盘最后看到Done!即完成。中途若提示Detected this may be a dump file说明你喂的是内存 dump 而非磁盘文件按提示输入 dump 的基址十六进制或直接输0强制继续。跑完检查dump/目录il2cpp.h、script.json、DummyDll/、dummy.dll、ida.py、ghidra.py应该都在。用 ILSpy 打开DummyDll/下任意一个 dll能看到游戏的类名、方法名、字段偏移——说明这一趟没白跑。Il2CppDumper 输出文件速查文件交给谁DummyDll/ILSpy / dnSpy看类层次、方法签名、字段偏移il2cpp.hC 结构体定义配合script.json在 IDA/Ghidra 里还原结构体布局script.json逆向工具的元数据配置记录版本、偏移和结构体信息ida.py/ida_with_struct.py直接在 IDA Pro 里跑批量重命名函数、导入结构体ghidra.py/ghidra_with_struct.pyGhidra 里跑作用同上生成之后下一步就一句话看逻辑的去开DummyDll/跟二进制细节的把对应平台的脚本扔进 IDA 或 Ghidra。平台与文件格式对照平台格式常见文件名WindowsPEGameAssembly.dllAndroidELF / ELF64libil2cpp.soiOS / macOSMach-O32/64/FatUnityFrameworkNintendo SwitchNSO主程序 NSO 文件WebAssemblyWASM.wasm 文件文件格式的识别靠程序开头 4 字节 magic分派逻辑在 Il2Cpp/ 的初始化流程里Mach-O Fat 二进制一个文件含多个架构运行时会让你选平台。输出文件由 Outputs/ 目录下的模块生成需要哪些产物可以改config.json控制比如GenerateDummyDll、GenerateStruct关掉就不用生成对应文件。Il2CppDumper 报错怎么排查ERROR: Metadata file supplied is not valid metadata file.可能原因选错文件或 metadata 被加密。动作核对.dat文件开头是否为FAB11BAF加密的话换一份未加密的副本。ERROR: Metadata file not found or encrypted.可能原因三个参数里漏了 metadata或它不是合法 metadata。动作检查命令里是否把二进制和.dat都传了。ERROR: This file may be protected.可能原因IL2CPP 二进制本身带保护磁盘文件不是可解析状态。动作改用运行中进程导出的内存 dump 当输入再按提示填基址。ERROR: Cant use auto mode to process file, try manual mode.可能原因自动搜索没找到注册函数。动作在 IDA 里手动定位 CodeRegistration 和 MetadataRegistration 地址按提示用十六进制填入。批量处理时不用逐个手敲写个 for 循环遍历游戏目录每次取当前目录下的 IL2CPP 二进制和 metadata 当输入输出到各自独立的子目录即可一个脚本跑完一整批。使用边界只分析你有合法权利分析的游戏比如自己的项目、开源作品或合法购买用于学习研究的版本。别把结果拿去做外挂、破解或公开分发反编译内容。遵守当地法律和平台服务条款出了纠纷工具帮不了你。收尾IL2CPP 二进制和 global-metadata.dat 都就位.dat头部是FAB11BAF.NET 6.0 或 8.0 SDK 装好dotnet build -c Release编译通过输出目录有写权限DummyDll/里的 dll 能被 ILSpy 正常打开报错了先查 metadata magic再查二进制是否被保护拿一个手边的 Unity 游戏把libil2cpp.so和global-metadata.dat找出来按上面的流程跑一遍——第一次能顺利看到Done!后面就全是熟练工的事。【免费下载链接】Il2CppDumperUnity il2cpp reverse engineer项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表