运行Il2CppDumper.exe并依次选择il2cpp的可执行文件(ELF,Mach-O或者PE文件)和global-metadata.dat文件,然后选择运行的模式,将在程序运行目录下生成dump.cs文件和script.py脚本
关于模式
Manual
你需要手动输入CodeRegistration和MetadataRegistration的指针地址,一般需要依靠反汇编工具来获取地址
Auto
通过函数的特征字节找到il2cpp_codegen_register函数并获取传入il2cpp::vm::MetadataCache::Register中的参数1(CodeRegistration)和参数2(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
利用Mono.Cecil生成的仿制Dll,使用反编译工具进行查看
关于config.json
DumpMethod,DumpField,DumpProperty,DumpAttribute,DumpFieldOffset,
DumpMethodOffset, DumpTypeDefIndex 控制程序是否在dump.cs输出相应的内容
DummyDll
控制程序是否生成DummyDll
ForceIl2CppVersion,ForceVersion
当ForceIl2CppVersion为true时,程序将根据ForceVersion指定的版本读取il2cpp的可执行文件(Metadata仍然使用header里的版本),在部分低版本的il2cpp中可能会用到(比如安卓20版本下,你可能需要设置ForceVersion为16程序才能正常工作)