各位好啊,我是开源君!
做过 iOS 安全测试的朋友,多半都踩过这个坑:手头没有能越狱的旧手机,好不容易淘到一台,系统版本还对不上工具链要求。升级一次系统,整套越狱环境可能就报废了。
于是,很多人只能囤几台老 iPhone,锁死在某个固件版本上,供着,生怕它"意外更新"。
为了测试一个 App,得先维护一个"文物级"的硬件博物馆,挺离谱的。
最近在网络上刷到一个叫 vphone-cli 的项目,才发现苹果自己给自己挖了个坑:他们为 Private Cloud Compute(PCC)搭的那套虚拟机基础设施,其实同样能拿来跑普通的 iOS 系统。
有人把这条路走通了,而且做成了一行命令就能跑起来的工具。
vphone-cli 是个基于苹果官方 Virtualization.framework 构建的命令行工具。
它的原理是利用 PCC 研究虚拟机基础设施,让你能够在 Apple Silicon 的 Mac 上直接引导并运行一个真实的虚拟 iPhone。

不是模拟器。
iOS 模拟器跑的其实是编译给 macOS 用的应用,本质是"套壳";
而 vphone-cli 跑的是真实的 iOS 内核、真实的文件系统、真实的越狱工具(Sileo、TrollStore),还带一个能直接 SSH 进去的 shell。
可以在上面跑 Frida,用 Burp 抓包,装卸测试环境跟切菜一样快,而且全程不需要一台物理 iPhone。
项目目前在 GitHub 上收获了 9.2k star,热度还在涨。

01 一条命令,端到端起飞
vphone-cli vm create myphone -V jb —— 就这一行,下载固件、打补丁、DFU 恢复、装越狱工具链、首次启动,全流程自动跑完。
02 五档"攻击面"任你选
从 less(保留 iOS 原生防护的патchless 模式)到 exp(越狱能力之外还加了反虚拟机检测研究补丁),一共五种固件变体,补丁数量从几个到上百个不等。

03 借用苹果自己的"内部装备"
这大概是最有意思的一点:vphone-cli 复用的虚拟机配置和管理格式,来自苹果为 Private Cloud Compute 数据中心公开的研究级 VM 基础设施。
04 VM 想拷贝就拷贝,想打包就打包
vm clone 秒级 APFS 克隆出一台全新身份的设备,vm export/vm import 支持打包迁移,配合 ~/.vphone/ 统一的数据目录管理,多套测试环境互不干扰,也方便团队之间分享现成的越狱镜像。
05 自带自动化控制接口
每台虚拟机都会开一个本地控制 socket,截图、点击、滑动、硬件按键、剪贴板操作全部支持脚本化调用,天然适合接入 AI 驱动的自动化测试流程。社区已经有人基于它封装了 vphone-mcp,直接对接 MCP 生态。

准备条件:
第一步,松开系统的安全锁(进入 Recovery 模式操作一次即可):
csrutil disable
csrutil allow-research-guests enable
重启后,回到正常系统再设置一个启动参数:
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
再重启一次,这一步就算完成了。这是因为工具用到了私有权限和未签名二进制,SIP 和 AMFI 默认会挡下它。
建议放在专门的研究机上做,不要用日常主力机,毕竟这两道防护关掉之后系统的保护力度会明显下降。
第二步,装依赖:
brew install python@3.13 aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd
第三步,拉代码、编译:
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
./scripts/setup_tools.sh
./scripts/build.sh
(--recurse-submodules 这个参数别漏了,否则关键组件会缺失。)
vphone-cli vm create myphone -V jb
vphone-cli vm launch myphone
第一次跑会下载固件、打补丁、走一遍 DFU 恢复流程,耐心等个半小时到一小时(取决于网速)。跑完之后,日常想启动,直接 vphone-cli vm launch myphone 就行,几秒钟的事。

跑起来之后,SSH 直连越狱环境:
ssh -p 22222 mobile@<vm-ip> # 密码 alpine

装个 Sileo 源、跑个 Frida server,一台随时可以重置、可以复制、可以打包分享的"越狱 iPhone 研究站"就到手了。

另外,源码构建也可以用 Makefile 一条龙(首次建议不加参数跑 regular,通了再上 JB)
make setup_machine # regular 变体
make setup_machine JB=1 # 完整越狱
make boot # 之后每次启动

vphone-cli通过将复杂的越狱和虚拟化流程封装成极简的命令,极大地降低了 iOS 安全研究和自动化测试的门槛。
虽然它有一定的硬件和系统限制(必须是 M 芯片 + macOS 15),但对于符合条件的开发者来说,这无疑是一个极具价值的“黑科技”工具箱,值得花点时间试试。
https://github.com/Lakr233/vphone-cli