分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

AloneMonkey/MonkeyDev

开发工具

为 Xcode 提供注入 dylib、编写 Objective-C/Logos Hook,并在非越狱 arm64 设备上调试 iOS App 的模板套件。

6,809
1,237
Python
GPL-3.0
创建于 9 年前

项目介绍

MonkeyDev 是基于 iOSOpenDev 的 Xcode 模板套件。它让开发者向已有 iOS App 注入 dylib,编写 Objective-C/CaptainHook 或 Logos Hook,再通过 Xcode 完成重签名、安装和调试,主要面向 Apple Silicon Mac 和 iOS 15+ 非越狱 arm64 真机上的 iOS 逆向与运行时分析。README 记录其验证环境为 Xcode 27.0 与 iPhone 14 Pro / iOS 18.6.2(README)。

除 MonkeyApp 外,套件还包括把 CaptainHook 插件打包成 CocoaPods 库的 MonkeyPod,以及面向越狱环境的 Logos Tweak、CaptainHook Tweak、Command-line Tool 向导,支持 rootless、rootful 和 roothide 三种包布局。

安装

需要完整 Xcode、原生 arm64 shell,以及当前用户 ~/theos 下的 Theos,不能装到 /opt/theos。先安装 Theos:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/theos/theos/master/bin/install-theos)"

然后安装 MonkeyDev 并执行自检:

sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/AloneMonkey/MonkeyDev/master/bin/md-install)"
/opt/MonkeyDev/bin/md-doctor

后续更新使用 sudo /opt/MonkeyDev/bin/md-update。安装位置为 /opt/MonkeyDev,模板注册到当前用户的 Xcode 模板目录,不修改 Xcode.app(安装说明)。

创建第一个 MonkeyApp 工程

  1. 重启 Xcode,通过 File → New → Project → MonkeyDev → MonkeyApp 新建工程。
  2. 填写项目名、开发团队和 Organization Identifier,Target App 保持 Optional。
  3. 把一个已砸壳的 IPA 或未加密 .app 放入 <App target>/TargetApp/;不放输入则使用内置 Demo。
  4. 选择 iPhone,以 Debug 构建运行。签名需要可用的证书、匹配的描述文件及设备授权。

目标输入必须放在 TargetApp 目录:Target App 文本框是历史越狱 Frida/SSH dump 入口,不是 IPA 选择器,MonkeyDev 也不负责在非越狱设备上自动砸壳。创建向导提供 MONKEYDEV_INSERT_DYLIB、MONKEYDEV_DEFAULT_BUNDLEID、MONKEYDEV_RESTORE_SYMBOL、MONKEYDEV_CLASS_DUMP、MONKEYDEV_UI_INSPECTOR 等构建设置(工程创建)。

编写 Hook

Objective-C/CaptainHook 代码写在 <项目名>Dylib/<项目名>Dylib.m,Logos 代码写在 <项目名>Dylib/Logos/<项目名>Dylib.xm,生成的 .mm 不要手改。两个入口可以同时运行。需要符号断点时,先开启符号还原、重新构建,再在 LLDB 设置断点,例如:

breakpoint set -n '-[YourClass yourMethod:]'

方法追踪会记录调用编号、线程、嵌套深度、参数、返回值及同步方法耗时,但只支持明确的签名子集,不是任意 ABI 的通用 Hook(Hook 与调试)。

开启 Export OC Headers 后,主程序头文件会导出到 <工程目录>/Headers/<App target 名>/,主要用于分析,不保证能作为完整 SDK 直接编译。UI 检查方面,Reveal 读取用户本机下载的 SDK,LookinServer 1.2.8 arm64 已内置,两者都不接入 Release 构建(头文件与视图检查)。

使用约束

  • 仅支持 thin arm64、未加密的真机输入;不支持 Intel 主机、模拟器、arm64e/PAC、Fat 或加密输入。arm64e 设备可以运行 arm64 App。
  • 打包副本会移除 App 扩展、Watch 和旧 Store 元数据;不覆盖扩展的独立签名与安装。
  • Cycript 和旧 Substrate 运行库已移除;Logos internal 不支持 %hookf。越狱 Tweak 需要兼容 MobileSubstrate 的加载器(如 ElleKit),roothide 包不能用普通 rootless 包替代。
  • USB 安装 Tweak 或命令行工具需要 brew install libusbmuxd libimobiledevice,密码认证还需 sshpass。构建不会关闭主机密钥检查,安装 deb 仍需 sudo 权限或免密 sudo。
  • macOS 模板尚未迁移,不在支持范围内;已有工程需单独迁移,增量构建必须每次执行签名阶段(支持范围与迁移)。
  • 项目以 GPL-3.0 分发,README 声明仅供技术交流,禁止商业及非法用途。

HotRepo 点评

MonkeyDev 有 6,809 Star 和 1,237 Fork,话题覆盖 CocoaPods、iOS、Theos、Xcode、Objective-C 与逆向工程,关注度不低。从当前 README 看,项目已明显超出早年的越狱场景:Apple Silicon 与非越狱 arm64 支持经过较新 Xcode 和 iOS 版本的验证,rootless 越狱变体也有真机测试记录。MonkeyApp、MonkeyPod 和越狱向导分工清楚,加上 md-doctor 自检和明确列出的不支持输入,安装前就能判断是否落在支持范围内。HotRepo 目前没有该仓库的 GitHub 日榜名次、Star 快照或 Hacker News 讨论记录。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。