MonkeyDev 是一款面向 iOS 平台的逆向开发工具套件,由开发者刘培庆(网名 AloneMonkey)在 iOSOpenDev 基础上改造而成,2017 年前后发布,以 Xcode 工程模板的形式提供。它把 Logos、CaptainHook 两种 Hook 语法、命令行工具以及动态库注入、符号还原、重签名等步骤整合进 Xcode,使开发者既能给越狱设备编写插件,也能在非越狱设备上对第三方应用做动态调试。该工具采用 GPL-3.0 许可,作者已停止维护,在较新的 Xcode 版本上需要额外修补才能使用。
定义
MonkeyDev 是一套运行在 macOS 上的 iOS 逆向开发工具套件,其本体是若干个 Xcode 工程模板与配套构建脚本[1]。开发者新建工程时选择相应模板,即可在 Xcode 中完成越狱插件的编写,或对非越狱设备上的第三方应用做注入与动态调试[2]。它的定位是集成环境:把原先生态中分散的工具与手工步骤收拢到一套模板里,减少重复配置[2]。
按官方说明,MonkeyDev 是 iOSOpenDev 的改造版本,支持较新的 theos,并提供 CaptainHook Tweak、Logos Tweak 与 Command-line Tool 三类模板[1]。它还支持拖入一个脱壳后的应用,自动完成 class-dump、restore-symbol、Reveal、Cycript 的集成,注入动态库并重签名后安装到非越狱设备[1]。
原理
MonkeyDev 的核心思路是重打包注入。以非越狱模块为例,工程目录中的 TargetApp 文件夹用于放置脱壳后的安装包;构建时工具会解包该安装包,把开发者编写的 Hook 代码编译成的动态库放入应用包内,并在可执行文件的 Mach-O 加载命令中插入一条 LC_LOAD_DYLIB,使应用启动时自动加载该动态库;随后对整个应用包重新签名,再安装到目标设备[3]。经过这一流程,原本需要越狱环境才能生效的插件效果,可以在非越狱设备上运行[3]。
Hook 的实现依赖两套语法。Logos Tweak 模板使用 theos 的 logify.pl 把 .xm 文件转换为 .mm 文件参与编译,默认集成 Cydia Substrate,通过 MSHookMessageEx 与 MSHookFunction 挂钩 Objective-C 方法与指定地址。CaptainHook Tweak 模板则导入 CaptainHook 头文件,使用其中的宏声明类、加载类、编写钩子函数并注册,过程中不需要语法转换,也不依赖 CydiaSubstrate 动态库。
构建过程中的行为由一组 Build Settings 控制,例如 MonkeyDevDeviceIP 与 MonkeyDevDevicePort 指定目标设备的地址和端口,MonkeyDevInstallOnAnyBuild 决定是否在每次构建后把包安装到设备,MonkeyDevBuildPackageOnAnyBuild 决定是否每次构建都生成 deb 包,MonkeyDevKillProcessOnInstall 用于在安装时结束指定进程[4]。
发展历程
MonkeyDev 的前身 iOSOpenDev 是一套提供 Logos、CaptainHook 等逆向工程模板的 Xcode 模板集合,其作者自 2013 年起不再更新,在 Xcode 7 之后出现各类安装与编译问题[5]。刘培庆最初只是为了解决 iOSOpenDev 的兼容问题,在实际使用中不断补充新功能,最终形成独立的 MonkeyDev[6]。
2017 年,MonkeyDev 随相关技术文章在中文 iOS 逆向社区传播,当时主要支持 Xcode 8 及以上版本,用于在非越狱设备上分析第三方应用[7]。此后作者逐渐停止维护更新,因此在 Xcode 14、Xcode 15 等新版本上会出现模板路径变化、找不到 libstdc++ 等问题,需要使用者手动删除模板中已废弃的路径、替换 fishhook 源文件或调整签名脚本才能继续编译,社区也出现了第三方维护的兼容分支[8]。
项目以 GPL-3.0 许可发布,代码托管于 GitHub,仓库采用 README 与 Wiki 文档结合的方式说明安装与使用[9]。作者在其中附有免责声明,声明软件仅供技术交流[1]。
应用
MonkeyDev 主要服务于 iOS 应用逆向分析与插件开发两类场景。在越狱设备上,开发者可以用它创建 CaptainHook Tweak、Logos Tweak 工程来编写 deb 插件,也可以创建运行于越狱设备的命令行工具。在非越狱设备上,MonkeyApp 类模板用于给第三方应用注入动态库,配合 class-dump 导出的头文件可以对私有类与私有方法进行挂钩,并通过 Xcode 控制台观察运行结果[3]。
工具集成能力方面,非越狱模板会自动链接 Reveal、Cycript 等调试组件,Release 构建时不再引入这些组件[10]。MonkeyDev 还支持通过 CocoaPods 为第三方应用集成 SDK,并提供了私有仓库,把编写好的非越狱插件打包发布后即可用 pod 一键安装,相当于搭建了一个非越狱插件的分发渠道[6]。有技术文档将这种模式描述为非越狱插件集成[11]。
局限
MonkeyDev 不能独立完成整个逆向流程。官方 README 的表述是支持脱壳应用的后续处理,实际使用中需要先由使用者自行对目标应用砸壳,工具才能接续进行注入与调试。它也没有提供脱壳能力本身。
重签名是使用过程中的高失败率环节。证书与描述文件必须匹配,应用标识符需要改成所用证书可签名的值,entitlements 在重签名过程中可能丢失,从而影响推送、钥匙串共享等功能;在部分较新的 iOS 版本上,系统对重签名包的校验更严格,可能出现首次安装成功、再次编译无法安装的情况[3]。
工具自身的维护状态也构成限制。作者已停止更新,MonkeyDev 对新版本 Xcode 与 theos 的适配需要使用者自行修补模板和脚本[12]。与 Frida 这类运行时注入框架相比,MonkeyDev 采用编译型方案,修改后需要重新构建安装,不适合需要即连即调的快速验证场景[3]。
参考资料
- github.com 上的网页 [引用日期2026-10-14]
- 目录 [引用日期2026-10-14]
- MonkeyDev 实战:给非越狱机上的 App 注入自己的代码 [引用日期2026-10-14]
- MonkeyDev [引用日期2026-10-14]
- 对iOSOpenDev的简单修改,兼容最新theos [引用日期2026-10-14]
- 使用 CocoaPods 给微信集成 SDK 打印收发消息 - 你所经历的挫折,都会成为你日后成功的垫脚石 [引用日期2026-10-14]
- MonkeyDev + Xcode 14.x 使用过程中各种错误解决 [引用日期2026-10-14]
- MonkeyDev + Xcode 14.x 使用过程中各种错误解决 [引用日期2026-10-14]
- wysaid/MonkeyDev | GitHub [引用日期2026-10-14]
- iOS逆向分析工具使用汇总 [引用日期2026-10-14]
- MonkeyDev [引用日期2026-10-14]
- MonkeyDev + Xcode 14.x 使用过程中各种错误解决 [引用日期2026-10-14]