Il2CppDumper是一款强大的工具,它可以从il2cpp中提取types、methods、fields等数据信息。除了支持switch的NSO格式外,它最关键的功能是详细解决了MetadataUsage的问题。在IDA中使用script.py脚本后,通过F5键即可看到启用的案例类和静态类的实际名称,这极大地简化了剖析优化算法和进行花样改动的过程。
格式支持:Il2CppDumper支持ELF、ELF64、Mach-O、PE和NSO格式。
Metadata版本支持:支持Metadata版本16以及19至24,导出包含types、fields、properties、methods、attributes。
全自动生成IDA脚本:可以自动生成重新命名和注释的脚本。
MetadataMakeFunction:健全IDA剖析,生成DummyDll。
使用方法:
运行Il2CppDumper.exe。
选择il2cpp的可执行文件(ELF、Mach-O或PE文件)和global-metadata.dat文件。
选择运行方式。
Manual:需要手动输入CodeRegistration和MetadataRegistration的指针地址,通常需要借助反汇编工具来获取地址。
Auto:根据函数的特点字节数寻找il2cpp_codegen_register函数,并获取传到il2cpp::vm::MetadataCache::Register中的两个主要参数(CodeRegistration和MetadataRegistration)。由于不同编译器优化的差异,许多情况下可能无法正常工作。
Auto(Plus):优先使用此方式,以metadata的数据信息作为依据,使用指针特点作为判断标准进行检索。支持Metadata版本20及之后版本;在16版本下,只能获取到CodeRegistration地址。
Auto(Symbol):目前仅支持ELF,使用内置的符号进行解析。
dump.cs文件:推荐使用具有C#语法高亮功能的在线编辑器打开。
script.py脚本:需要在IDA中安装Python。在IDA中通过File-Script file选择script.py运行,可以重新命名methodName,添加stringLiteral注释和MakeFunction相关的DummyDll。
反编译软件:使用反编译软件查询有关config.json。
管理程序:
DumpMethod、DumpField、DumpProperty、DumpAttribute:管理程序是否在dump.cs输出相应的内。
DummyDll管理程序:管理是否生成DummyDll。
ForceIl2CppVersion、ForceVersion:当ForceIl2CppVersion为true时,程序将根据ForceVersion指定的版本加载il2cpp的可执行文件(Metadata依然使用header里的版本)。在部分低版本的il2cpp中可能会采用(例如安卓系统20版本下,你可能需要将ForceVersion设置为16程序才能正常工作)。
ERROR: Metadata file supplied is not valid metadata file:global-metadata.dat不是一个有效的metadata文件,通常是由于游戏对global-metadata.dat文件进行了加密。关于破解的问题,建议去相关论坛寻求帮助,请不要在issues中提问。
ERROR: Can't use this mode to process file, try another mode:当所有自动方式都无法工作时,请确认可执行文件未加壳或受保护。你可以创建一个新的issue,并上传文件,我会尝试处理。