IL2CPP反编译
Il2CppDumper+IDA 反编译IL2CPP形式打包出的Unity程序代码
使用工具
- Il2CppDumper-win-v6.7.40
- IDA Professional 9.0
反编译
- IL2CPP打包
重点关注IL2CPP形式打包后的两个文件GameAssembly.dll与global-metadata.dat
- global-metadata.dat :存储与代码元数据相关的信息,比如类,接口,结构体以及方法名,参数等。Unity 加载 global-metadata.dat 以获取类型和方法的定义
- GameAssembly.dll : 存储的是经过 IL2CPP 转换后生成的原生代码,将 C# 的托管代码转换为 C++ 原生代码,编译为动态链接库。Unity 调用 GameAssembly.dll 中的方法实现,并根据元数据中的索引匹配对应的方法
- Il2CppDumper分析提取
Il2CppDumper主要处理的也是前面我们提到的两个文件,在Il2CppDumper.exe文件目录下打开cmd,输入文件路径进行解析
可以看到提取到以下一些文件:
- DummyDll : 文件夹内是通过解析 global-metadata.dat 元数据生成的一组dll文件,相当于伪 C# 程序集,方便加载到反编译工具dnSpy、ILSpy等中查看类结构、方法签名和字段定义
- dump.cs : 完整的 C# 源代码文件,类似于 DummyDll 文件夹中的 .dll 的文本形式,当然也不包含具体的方法实现
- il2cpp.h : c++头文件包含数据结构定义,辅助后续分析 GameAssembly.dll 中的实现
- script.json : 包含游戏的类、方法、字段等元数据的详细信息,以及这些数据在 GameAssembly.dll 中的内存地址
- stringliteral.json : 包含所有从 global-metadata.dat 中提取的字符串常量
- IDA反编译
打开IDA,加载GameAssembly.dll文件,使用64位PE文件格式进行解析,耐心等待加载完毕
File -> script file… 运行Il2CppDumper提供的脚本ida_with_struct_py3.py,运行后分别选择script.json与il2cpp.h,耐心等待解析完毕
这个时候就可以根据方法名看到具体的实现
完结撒花~
IL2CPP反编译
https://baifabaiquan.cn/2025/01/13/IL2CPP反编译/