教程·阅读约 3 分钟·
在 Mac 上虚拟一台 iPhone:vphone-cli 从零到开机完整教程

在 Mac 上虚拟一台 iPhone:vphone-cli 从零到开机完整教程

vphone-cli 利用苹果官方 Virtualization.framework 在 Apple Silicon Mac 上启动虚拟 iPhone,支持刷入越狱固件、SSH/VNC 连接,还带 MCP 服务可做 AI 驱动的自动化测试。本文覆盖前置条件、安装、一条命令创建虚拟机到手动流程拆解。

原文来源:GitHub - Lakr233/vphone-cli — 用苹果官方 Virtualization.framework 在 Apple Silicon Mac 上启动虚拟 iPhone,支持一键创建、固件修补、越狱和 SSH/VNC 连接。

想在 Mac 上跑一台 iPhone 虚拟机?vphone-cli 做到了。这个项目利用苹果自家的 Virtualization.framework(基于 PCC 研究用虚拟机的基础设施),能在 Apple Silicon 的 macOS 上启动真正的 iOS 系统——不是模拟器,是完整的 iPhone 固件,能开越狱、能装 App、能 SSH 进去。目前在 GitHub 上有 9000 多星,作者是知名 iOS 开发者 Lakr233。

它最有想象力的用途是自动化测试:vphone-cli 暴露了一个控制 socket,支持截图、触摸、滑动、按键、剪贴板操作,每个动作都能返回实时截图,配合 vphone-mcp 这个 MCP server,AI Agent 可以直接驱动一台真 iPhone 做端到端测试。

前置条件

这是硬性要求,缺一不可:

  • Apple Silicon Mac(M1 及以上)。Intel Mac 不行,Virtualization.framework 的 PV=3 guest 启动不支持
  • macOS 15+(Sequoia)
  • Xcode + iOS SDK(用于交叉编译 guest 端守护进程)
  • 调整 SIP/AMFI,允许私有 PV=3 entitlement 和未签名二进制

最后一步有两种做法。方案 A:彻底关闭 SIP + AMFI(最宽松):恢复模式(长按电源键 → Terminal)里执行 csrutil disablecsrutil allow-research-guests enable,重启进 macOS 后设置启动参数 sudo nvram boot-args="amfi_get_out_of_my_way=1 -v",再重启。方案 B:保持 SIP 开启(更安全):恢复模式里执行 csrutil enable --without debugcsrutil allow-research-guests enable,重启后运行 vphone-amfidont 把二进制加进白名单。方案 B 只在调试层面放宽,系统级 AMFI 仍然生效,推荐优先试它。

—— 广告 ——

安装

Homebrew 一键安装:

code
brew install zqxwce/tap/vphone-cli

或者从源码构建(需要先装依赖:brew install python@3.13 aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd):

code
git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.git
./scripts/setup_tools.sh      # 安装依赖、构建工具链子模块、创建 Python venv
./scripts/build.sh            # 构建签名 vphone-cli、打包 .app、交叉编译 vphoned

快速开始:一条命令

最简单的路径,一条命令完成下载固件 → 修补 → DFU 恢复 → 安装 CFW → 首次开机全流程:

code
vphone-cli vm create myphone -V jb        # -V 指定固件变体
vphone-cli vm launch myphone

-V jb 里的 jb 是固件变体名。vphone-cli 提供五个档位的安全绕过程度:

变体启动链补丁CFW 阶段说明
less42无补丁,保留 iOS 缓解机制
regular4210绕过 AMFI/SSV/Img4/TXM
dev5312额外 TXM entitlement/调试绕过
jb11314完整越狱(首次启动自动装 Sileo、TrollStore)
exp14118越狱超集 + 反虚拟机检测研究补丁

日常用 jb 就够,研究反检测的才需要 exp

手动流程:六步拆解

vm create 把下面六步自动化了,想理解原理或单独重跑某一步时可以手动来:

code
vphone-cli vm new myphone                              # 1. 建空虚拟机(可指定 CPU/内存/磁盘)
vphone-cli fw prepare myphone --iphone-version 26.1    # 2. 下载并合并 IPSW 固件
vphone-cli fw patch myphone --variant jb               # 3. 修补启动链
vphone-cli vm launch myphone --dfu &                   # 4. 进入 DFU 模式(后台)
vphone-cli restore myphone --get-shsh                  #    获取 SHSH
vphone-cli restore myphone                             #    DFU 恢复固件
vphone-cli vm stop myphone                             #    停止 DFU 启动
vphone-cli cfw install myphone --variant jb            # 5. 安装 CFW(主机挂载方式,需要 sudo)
vphone-cli vm launch myphone                           # 6. 首次开机

想升级 iOS 版本,把 fw prepare 指向新 IPSW 即可:vphone-cli fw prepare myphone --iphone-source /path/to.ipsw --cloudos-source /path/to.ipsw

连接虚拟机

开机后连进去的方式:

  • 越狱变体ssh -p 22222 mobile@<vm-ip>,密码 alpine
  • regular/dev 变体ssh -p 22222 root@<vm-ip>
  • 图形界面:VNC 客户端连 vnc://<vm-ip>:5901

所有数据默认存放在 ~/.vphone/ 下:虚拟机在 VMs/、固件缓存 ipsws/、补丁产物 tools/、越狱用的 deb 包 debs/、Python 环境 venv/。想整体迁移或换位置,设置 $VPHONE_ROOT 重定向即可,也可以 vm export myphone --out myphone.tzst 导出、vm import 导入。

常见坑

README 的 FAQ 部分列了几个高频问题,提前避开能省不少时间:

  • zsh: killed ./vphone-cli:AMFI/调试限制没绕开,检查前置条件的 SIP/AMFI 步骤
  • Virtualization is not available on this hardware:你本机就是虚拟机,PV=3 无法嵌套,需要实体 Mac
  • 卡在 "Press home to continue":VNC 连上后用右键(双指点击)模拟 Home 键
  • 系统应用装不上:iOS 初始化设置里别选日本或欧盟地区(额外的合规检查虚拟机过不了),选美国
  • App 启动崩溃 EXC_GUARD:用 vphone-cli fw patch <name> --variant <v> --force-exc-guard 重新修补后恢复
  • cfw install 卡死:已知的 ldid-procursus 2.1.5 bug(无符号零值导致死循环),brew install --HEAD ldid-procursus 从源码重装解决

虚拟机管理实战

日常管理命令都很直观:vm list 查看全部虚拟机(支持 --json 方便脚本化)、vm info myphone 看单台配置、vm rename myphone iphone16 改名、vm delete iphone16 删除。两台想同时跑可以 vm clone myphone myphone-2——基于 APFS 的快速克隆,新实例拥有全新的设备身份,适合做多设备测试。

资源可以按需分配:vm new myphone 创建时就能指定 CPU/内存/磁盘,vm config myphone --cpu 8 --memory 8192 事后调整。备份迁移用 vm export myphone --out myphone.tzst(默认 zstd 快速压缩,--max 换 xz -9 极限压缩),vm import myphone.tzst --name restored 导入,导出会自动跳过恢复目录和暂存文件,体积可控。

进阶玩法

vphone-cli 的自动化能力相当完整:每个 VM bundle 里有 vphone.sock 控制 socket,支持截图、触摸、滑动、硬件按键、剪贴板操作,每个动作返回内联截图。配合 vphone-mcp 这个 MCP server,AI 编程 Agent 可以直接驱动虚拟机里的真实 iOS App 做端到端测试——截图看界面、点击元素、验证结果,全程不需要真机。

风险提示

最后说点实在的:jb/exp 变体要打 100 多个启动链补丁,绕过 AMFI 和签名验证,这本质上是越狱级操作,只能在测试机上玩。方案 A(彻底关 SIP)会降低整机安全性,建议优先用方案 B 保持系统级 AMFI。另外首次运行要下载完整 IPSW 固件(几个 GB),磁盘和时间都要预留。想尝鲜的话,从 less 变体开始最稳妥——不需要任何越狱补丁,先让虚拟机跑起来再说。

分享到
微博Twitter

© 2026 四月

原文链接:https://www.aprilzz.com/tutorials/vphone-cli-virtual-iphone-macos