>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Swift

在 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 的完整虚拟机。

poc

底层工作原理

该项目基于 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。如果你选择了 devregular 配置文件,则以 root 用户身份连接。

图形显示通过内置 VNC 服务器在 5901 端口输出。使用 macOS 内置的屏幕共享应用打开它,输入 vnc://<ip-адрес-виртуалки>:5901

初始 iOS 设置有一些怪癖。在显示

相关项目