在 Apple Silicon 上运行虚拟 iPhone:vphone-cli 实战
如果你曾经为 iOS 开发或深入研究过 Apple 的系统服务,你可能已经遇到了 Xcode 标准模拟器的局限性。模拟器为主机架构构建二进制文件,并在特殊的 macOS 环境中运行。这对于快速 UI 原型设计很有效,但没有真正的 Darwin 内核用于 iPhone,没有适当的进程隔离,也没有大量系统守护进程。直到最近,测试低级组件或 tweak 还需要在桌上放一堆测试设备。
情况在 Apple 为 macOS 15 Sequoia 中的安全研究人员发布私有云计算(Private Cloud Compute,PCC)环境时发生了变化。开发者 Lakr233 利用这一基础设施编写了 vphone-cli。这是一款 console 工具,可以在 Apple Silicon Mac 上构建并运行配备真实 iOS 的完整虚拟机。

底层工作原理
该项目基于 Apple 的 Virtualization.framework 系统框架,使用私有虚拟化类型 PV=3。该工具接收两个官方 IPSW 镜像:标准 iPhone 固件和 CloudOS 镜像。然后脚本将它们合并、打补丁引导链、执行 DFU 恢复并应用自定义系统分区。
最终得到一个真正的访客 iOS 实例,拥有自己的网络地址、SSH 访问权限和 VNC 连接。
主机准备
让项目运行起来并非一键完成。Apple 严格保护其内部虚拟化机制,因此你需要放宽主机系统的限制。
你需要一台运行 macOS 15 或更高版本的 M 系列 Mac。首先,禁用 SIP 或启用 guest research systems。为此,在启动时按住电源按钮进入恢复模式,然后打开终端:
csrutil disable
csrutil allow-research-guests enable
重启进入正常模式后,传递内核参数以禁用 AMFI:
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
如果你不想禁用系统级检查,作者提供了替代方案。你可以保持 SIP 处于调试模式,并通过辅助二进制文件 vphone-amfidont 选择性地移除限制。
通过 Homebrew 依赖安装核心工具:
brew install [email protected] aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd
brew install zqxwce/tap/vphone-cli
创建你的第一个 VM
整个 VM 创建过程通过一条命令自动化完成。该工具下载所需的 IPSW 文件、打补丁引导加载程序、创建 bundle 并执行初始设置程序:
vphone-cli vm create myphone -V jb
vphone-cli vm launch myphone
-V 标志(或 --variant)设置固件修改的深度。该仓库有五个变体:
less仅包含 4 个补丁,保留 iOS 标准安全机制。regular包含 42 个补丁,绕过 AMFI、Signed System Volume(SSV)签名检查和 TXM。dev添加了绕过 entitlement 检查和调试锁的补丁。jb应用 113 个补丁,并立即安装 Sileo 包管理器和 TrollStore。exp在越狱版本基础上增加了隐藏虚拟机运行状态的补丁。
jb 配置文件适合大多数实验。创建完成后,镜像启动,你可以连接到它。
连接和工作
虚拟设备控制分为两个通道:终端和图形。
Shell 访问使用 22222 端口的 SSH:
ssh -p 22222 mobile@<ip-адрес-виртуалки>
越狱版本中 mobile 用户的默认密码是 alpine。如果你选择了 dev 或 regular 配置文件,则以 root 用户身份连接。
图形显示通过内置 VNC 服务器在 5901 端口输出。使用 macOS 内置的屏幕共享应用打开它,输入 vnc://<ip-адрес-виртуалки>:5901。
初始 iOS 设置有一些怪癖。在显示
相关项目