MonkeyDev 宿主 + 注入动态库,用于自动 dump Unity IL2CPP(默认二进制 UnityFramework)、生成 dump.cs/头文件并可自动安装 set_Text hook,内置浮动球控制面板便于查看和调试。
- 自动 dump:启动后等待 IL2CPP 就绪并延迟约 10 秒,生成
<AppName>_UNITYDUMP文件夹和同名 zip,包含dump.cs、Assembly/头文件、set_text_rvas.json。 - set_Text / set_htmlText 收集:解析 dump.cs/JSON 生成 hook 列表,按
base + rva写入方法指针槽(无需提前算 MemberInfo 偏移);缺少 RVA 时再回退名称解析,截获文本写入内置日志。 - 控制面板:点击屏幕右侧 “I2F” 浮动球切换自动 dump/自动 hook/ dump 后自动 hook,可重新解析 dump、清空 hook 或日志,并查看当前 hook 与文本记录。
- 崩溃防护:如果上次安装 hook 崩溃,会自动禁用对应条目并提示。
- 调试辅助:调试构建下开启 Cycript(6666 端口);附带 AntiAntiDebug、fishhook、MethodTrace 等工具代码。
I2CppDumper/:MonkeyDev 宿主工程;Config/MDConfig.plist配置目标 App;TargetApp/放置解密.app/IPA 内容;Scripts/quick-resign.sh重新签名脚本。I2CppDumperDylib/:注入逻辑;Core/为 IL2CPP dumper;includes/集成 SSZipArchive、MISFloatingBall、SDAutoLayout 等;Trace/、AntiAntiDebug/、fishhook/工具;Il2CppDumpEntry.mm为 dump 与 hook 主流程;I2F*前缀文件实现 UI、配置与日志。LatestBuild/:Xcode/MonkeyDev 构建输出(IPA 与辅助脚本)。
- 已安装 MonkeyDev,能在真机上构建并签名。
- 将解密后的目标 App 放入
I2CppDumper/TargetApp/,或在MDConfig.plist中配置下载/安装方式。 - 若需调整 IL2CPP 二进制名称或等待时间,可编辑
I2CppDumperDylib/Core/config.h(默认二进制UnityFramework,等待 10 秒)。
- 打开
I2CppDumper.xcodeproj,选择 MonkeyDev scheme 和目标设备。 - 确保证书与
MDConfig.plist配置正确,TargetApp/下已有目标 App。 ⌘R运行:MonkeyDev 会重签宿主并安装到设备,按配置自动 dump/安装 set_Text hook。- 在 App 内点击 “I2F” 浮动球查看控制面板、文本日志与 hook 列表。
在 I2CppDumper/Scripts 目录执行:
./quick-resign.sh [insert] /abs/path/origin.ipa /abs/path/output/Target.ipa- 加
insert参数会将 dylib 注入;不加则仅重签。 - 输出 IPA 同时保存在
LatestBuild/Target.ipa。
- 首次运行或开启自动 dump 时,线程会等待约 10 秒并确认 IL2CPP 域可用后开始 dump。
- 结果保存在沙盒
Documents/<AppName>_UNITYDUMP/,并生成<AppName>_UNITYDUMP.zip;set_text_rvas.json存储匹配到的 set_Text RVA/签名,供后续自动安装。 - 若启用自动安装 hook(默认开启),会在启动或 dump 后写入 NSUserDefaults,并按 dump 中的
base + rva直接覆盖方法指针槽安装;截获文本实时写入控制面板日志。特殊情况仍可提供slot_offset/orig_offset手工配置。 - “重新解析 dump.cs” 会使用最新 dump 重新生成 hook 列表并尝试安装,便于更新。
- 项目无单元测试;请在真机上验证:确认
Documents/<AppName>_UNITYDUMP存在、控制面板能看到日志。 - dump 失败可检查设备上生成的
logs.txt或 Xcode 控制台;确保目标为 IL2CPP/Unity 应用且已解密。