運(yùn)行Il2CppDumper最新版并依次選擇il2cpp的可執(zhí)行文件(ELF,Mach-O或者PE文件)和global-metadata.dat文件,然后選擇運(yùn)行的模式,將在程序運(yùn)行目錄下生成dump.cs文件和script.py腳本
關(guān)于模式
Manual
你需要手動(dòng)輸入CodeRegistration和MetadataRegistration的指針地址,一般需要依靠反匯編工具來獲取地址
Auto
通過函數(shù)的特征字節(jié)找到il2cpp_codegen_register函數(shù)并獲取傳入il2cpp::vm::MetadataCache::Register中的參數(shù)1(CodeRegistration)和參數(shù)2(MetadataRegistration)。由于不同編譯器優(yōu)化差異,很多情況下無法正常工作。
Auto(Plus) - 優(yōu)先使用此模式
以metadata的數(shù)據(jù)作為依據(jù),指針特征作為判讀條件進(jìn)行搜索。
支持Metadata版本20及以后版本
在16版本下只能獲取到CodeRegistration地址
Auto(Symbol)
目前只支持ELF,使用自帶的符號(hào)進(jìn)行處理。
關(guān)于dump.cs
文本文件,推薦使用有c#語法高亮的編輯器打開
關(guān)于script.py
需要安裝IDA所需的python。在IDA中File-Script
file選擇script.py運(yùn)行即可,會(huì)重命名methodName,添加stringLiteral注釋和MakeFunction
關(guān)于DummyDll
利用Mono.Cecil生成的仿制Dll,使用反編譯工具進(jìn)行查看
關(guān)于config.json
DumpMethod,DumpField,DumpProperty,DumpAttribute,DumpFieldOffset,
DumpMethodOffset, DumpTypeDefIndex 控制程序是否在dump.cs輸出相應(yīng)的內(nèi)容
DummyDll
控制程序是否生成DummyDll
ForceIl2CppVersion,F(xiàn)orceVersion
當(dāng)ForceIl2CppVersion為true時(shí),程序?qū)⒏鶕?jù)ForceVersion指定的版本讀取il2cpp的可執(zhí)行文件(Metadata仍然使用header里的版本),在部分低版本的il2cpp中可能會(huì)用到(比如安卓20版本下,你可能需要設(shè)置ForceVersion為16程序才能正常工作)