Il2CppDumper是一款專業(yè)反編譯工具,運行Il2CppDumper.exe并依次選擇il2cpp的可執(zhí)行文件(ELF,Mach-O或者PE文件)和global-metadata.dat文件,然后選擇運行的模式,將在程序運行目錄下生成dump.cs文件和script.py腳本。Il2CppDumper支持從il2cpp中獲取types, methods, fields等等數(shù)據(jù),除了支持switch的NSO格式外,最主要的還是完整處理了下MetadataUsage,現(xiàn)在在IDA執(zhí)行script.py后,F(xiàn)5能看到所調用的實例類,靜態(tài)類的具體名稱了,分析算法和搞些花式修改也更容易了!有需要的小伙伴歡迎來西西下載。
軟件功能:
支持ELF, ELF64, Mach-O, PE和NSO格式
支持Metadata版本16, 19~24
導出包括types, fields, properties, methods, attributes
自動生成IDA腳本
重命名函數(shù)
重命名并注釋Metadata
MakeFunction完善IDA分析
生成DummyDll
使用說明:
運行Il2CppDumper.exe并依次選擇il2cpp的可執(zhí)行文件(ELF,Mach-O或者PE文件)和global-metadata.dat文件,然后選擇運行的模式,將在程序運行目錄下生成dump.cs文件和script.py腳本
關于模式
Manual
你需要手動輸入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ù),指針特征作為判讀條件進行搜索。
支持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,F(xiàn)orceVersion
當ForceIl2CppVersion為true時,程序將根據(jù)ForceVersion指定的版本讀取il2cpp的可執(zhí)行文件(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.
當所有自動模式都無法工作時,確認可執(zhí)行文件未加殼或受保護后,你可以打開一個新的issue,并上傳文件,我會嘗試解決