【文章标题】:通过Apple的Virtualization.framework启动虚拟iPhone

【文章正文】: 通过Apple的Virtualization.framework使用PCC研究虚拟机基础设施启动虚拟iPhone。 主机要求:

  • Apple Silicon芯片
  • macOS 15+(Sequoia系统)
  • Xcode + iOS SDK(用于交叉编译客户机守护进程)
  • 需放松SIP/AMFI限制以允许使用未签名二进制文件获取私有PV=3权限 依赖项安装: brew install python@3.13 aria2 wget gnu-tar openssl@3 ldid-procursus sshpass keystone cmake libusb ipsw zstd brew install zqxwce/tap/vphone-cli git clone —recurse-submodules https://github.com/Lakr233/vphone-cli.git ./scripts/setup_tools.sh # 安装依赖项,构建工具链子模块,创建Python虚拟环境 ./scripts/build.sh # 构建并签名vphone-cli,打包.app文件,交叉编译vphoned cd .build/vphone-cli.app/Contents/MacOS/ vphone-cli —help 单命令端到端创建虚拟机(下载→打补丁→DFU恢复→CFW安装→首次启动): vphone-cli vm create myphone -V jb # -V / —variant参数指定变体 vphone-cli vm launch myphone vphone-cli vm create会运行完整流程;以下独立步骤可手动操作或重跑特定阶段: vphone-cli vm list # 列出虚拟机(—json参数支持脚本处理) vphone-cli vm info myphone # 显示单个虚拟机信息 vphone-cli vm new myphone # 创建空配置包(可设置cpu/内存/磁盘选项) vphone-cli vm config myphone —cpu 8 —memory 8192 vphone-cli vm clone myphone myphone-2 # 快速APFS克隆,生成新设备标识 vphone-cli vm export myphone —out myphone.tzst # 默认使用zstd快速压缩(—max参数对应xz -9级);—out可指定目录(自动命名.tzst/.txz);跳过恢复目录和临时文件 vphone-cli vm import myphone.tzst —name restored vphone-cli vm rename myphone iphone16 vphone-cli vm delete iphone16 分步创建流程: vphone-cli vm new myphone # 1. 创建空配置包 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. 安装定制固件(需主机挂载;要求sudo权限) vphone-cli vm launch myphone # 6. 首次启动 通过指定IPSW路径更新iOS版本:—iphone-source /路径/到.ipsw —cloudos-source /路径/到.ipsw 五种安全绕过等级递增的补丁变体(通过—variant参数指定): | 变体类型 | 启动链补丁 | CFW阶段 | 说明 | |---|---|---|---| | less | 4处补丁 | 2阶段 | 无补丁模式——保持iOS防护机制启用 | | regular | 42处补丁 | 10阶段 | 绕过AMFI/SSV/Img4/TXM | | dev | 53处补丁 | 12阶段 | 增加TXM权限/调试绕过 | | jb | 113处补丁 | 14阶段 | 完整越狱(首次启动自动安装Sileo和TrollStore) | | exp | 141处补丁 | 18阶段 | 越狱超集+反虚拟机检测研究补丁 | 详见research/0_binary_patch_comparison.md获取组件级分析。 连接方式:
  • SSH(越狱版):ssh -p 22222 mobile@<虚拟机IP>(密码alpine)
  • SSH(常规/开发版):ssh -p 22222 root@<虚拟机IP>
  • VNC:vnc://<虚拟机IP>:5901 所有vphone-cli生成文件存储在~/.vphone/目录下(独立于代码库和.app包确保签名包可移植),可通过VPHONE_ROOT完全覆盖默认位置 | | /.vphone/VMs/ | 虚拟机配置包——每个VM单独目录。此为资源库,可通过VPHONE_VENV_DIR覆盖) | 优先级:单项覆盖变量(VPHONE_ROOT>默认/.vphone。ipsws/、tools/和debs/缓存始终位于当前生效的根目录下。 配置方案A——完全禁用SIP,然后通过启动参数关闭AMFI(最宽松模式)。 在恢复模式(长按电源键→终端): csrutil disable csrutil allow-research-guests enable 然后重启进入macOS设置AMFI启动参数(需SIP完全关闭才能生效): sudo nvram boot-args=“amfi_get_out_of_my_way=1 -v” # 设置后需重启 配置方案B——保持SIP开启(仅放松调试限制),通过amfidont白名单放行二进制(全局保持AMFI启用)。 在恢复模式: csrutil enable —without debug csrutil allow-research-guests enable 然后重启进入macOS执行: vphone-amfido