741 字( 2 分钟阅读 )

Il2CppDumper是一个常用的Unity逆向工具、ILSpy是一个.NET逆向工具、Ghidra是一个免费开源的二进制逆向工具(与IDA类似)。

本篇文章将会简单介绍一下如何在macOS上使用Il2CppDumper和Ghidra逆向Unity,经过测试即使在ARM架构上也可以正常运行。

获取程序

请确认已安装Homebrew,笔者使用的版本为3.3.9

.NET运行时环境

Il2CppDumper是一个使用.NET编写的程序,为了在macOS上执行,需要先安装.NET运行时环境。如果有.NET开发的需求,也可以选择安装dotnet-sdk

brew install dotnet

笔者使用的是6.0.101版本。

Il2CppDumper

请从GitHub Release中获取最新版本,下载时请注意选择net6文件。

笔者下载的文件为Il2CppDumper-net6-v6.7.6.zip

ILSpy

可以直接使用Homebrew安装Avalonia ILSpy。如果不需要独立程序,也可以在Visual Studio Code中安装ilspy-vscode插件。

brew install ilspy

笔者使用的是7.0-rc2版本。

Ghidra

可以直接使用Homebrew安装。

brew install ghidra

笔者使用的是10.1.1版本。

Unity Dump

首先准备好需要逆向的二进制文件,一般Android是libil2cpp.so、iOS是UnityFramework,下文以UnityFramework为例。除此之外,还需要准备Global Matadata,一般名为global-metadata.dat

准备好需要逆向的文件后,将Il2CppDumper解压到相同文件夹(即Il2CppDumper.dllUnityFrameworkglobal-metadata.dat在同一文件夹中),然后在此文件夹中打开终端执行命令:

dotnet Il2CppDumper.dll UnityFramework global-metadata.dat

如果正常执行,会输出类似内容:

Dumping...
Done!
Generate struct...
Done!
Generate dummy dll...
Done!
Press any key to exit...

.NET逆向

如果需要进一步逆向Dump得到的DummyDll文件夹中的dll文件,可以使用ILSpy。

ILSpy可以直接在启动台中启动,点击File-Open,选择DummyDll中的所有文件,然后在Assembly-CSharp中查看结构。

二进制逆向

  • 在Il2CppDumper文件夹中执行命令python il2cpp_header_to_ghidra.py处理好il2cpp_ghidea.h
  • 在终端中使用命令ghidraRun启动Ghidra,点击File-New Project...新建一个项目,然后点击File-Import File...选择UnityFramework,然后在弹出的Analyze对话框选择No不进行分析。
  • 然后在File-Parse C Source中添加il2cpp_ghidea.h,点击Parse to Program
  • 等待处理完成后,将ghidra_with_struct.py放入~/ghidra_scripts文件夹,点击Window-Script Manager,点击右上角Manage Script Directories,勾选$USER_HOME/ghidra_scripts,点击刷新按钮。回到上一界面,选择ghidra_with_struct.py后点击Run图标,在弹出的文件选择器中选择script.json,等待执行、分析完毕。
  • 最后可以在Code BrowserSymbol Tree中查看需要的代码。

留下评论