ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

vphone - cli:借助 Apple 框架启动虚拟 iPhone,多语言支持且功能丰富!

vphone - cli:借助 Apple 框架启动虚拟 iPhone,多语言支持且功能丰富! 支持语言vphone - cli 支持韩语、日语、中文和英语。启动原理vphone - cli 借助 Apple 的 Virtualization.framework利用 PCC 研究 VM 基础设施启动虚拟 iPhone。前提条件主机需为 Apple Silicon 且运行 macOS 15 Sequoia安装 Xcode iOS SDK用于交叉编译访客守护进程放宽 SIP/AMFI 限制以允许使用未签名二进制文件的私有 PV 3 权限。依赖项通过 brew install python3.13 aria2 wget gnu - tar openssl3 ldid - procursus sshpass keystone cmake libusb ipsw zstd 进行安装。安装使用 brew install zqxwce/tap/vphone - cli 进行安装。构建1. 使用 git clone --recurse - submodules https://github.com/Lakr233/vphone - cli.git 克隆代码库。2. 运行 ./scripts/setup_tools.sh 安装依赖项、构建工具链子模块并创建 Python 虚拟环境。3. 运行 ./scripts/build.sh 构建并签名 vphone - cli打包 .app交叉编译 vphoned。4. 进入 .build/vphone - cli.app/Contents/MacOS/ 目录运行 vphone - cli --help。快速开始使用一条命令即可端到端创建一个 VM下载 → 打补丁 → DFU 恢复 → 安装 CFW → 首次启动vphone - cli vm create myphone - V jb- V 或 --variantvphone - cli vm launch myphone。命令vphone - cli vm create执行整个流程以下单个步骤可让你手动操作或重新运行某一阶段。管理命令vphone - cli vm list列出 VMs--json 用于脚本编写vphone - cli vm info myphone显示单个 VM 的信息vphone - cli vm new myphone创建一个空的捆绑包可设置 CPU、内存、磁盘选项vphone - cli vm config myphone --cpu 8 --memory 8192配置 VMvphone - 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导入 VMvphone - cli vm rename myphone iphone16重命名 VMvphone - cli vm delete iphone16删除 VM。手动构建 VM1. vphone - cli vm new myphone创建空的捆绑包。2. vphone - cli fw prepare myphone --iphone - version 26.1下载并合并 IPSWs。3. vphone - cli fw patch myphone --variant jb对启动链打补丁。4. vphone - cli vm launch myphone --dfu 进入 DFU 模式后台运行。5. vphone - cli restore myphone --get - shsh获取 SHSH。6. vphone - cli restore myphone进行 DFU 恢复。7. vphone - cli vm stop myphone停止 DFU 启动。8. vphone - cli cfw install myphone --variant jb安装 CFW需要主机挂载会请求 sudo 权限。9. vphone - cli vm launch myphone首次启动。更新到较新的 iOS通过指定 fw prepare 的 IPSW 路径进行更新--iphone - source /path/to.ipsw --cloudos - source /path/to.ipsw。固件变体有五种补丁变体安全绕过程度逐渐增加通过 --variant 参数指定变体启动链CFW说明less4 个补丁2 个阶段无补丁保持 iOS 缓解措施启用regular42 个补丁10 个阶段绕过 AMFI/SSV/Img4/TXMdev53 个补丁12 个阶段额外绕过 TXM 权限/调试jb113 个补丁14 个阶段完整越狱首次启动时自动安装 Sileo、TrollStoreexp141 个补丁18 个阶段JB 超集 反 VM 检测研究补丁具体组件分解可参考 research/0_binary_patch_comparison.md。运行与连接SSH越狱ssh - p 22222 mobile密码alpineSSH常规/开发ssh - p 22222 rootVNCvnc://:5901。文件位置vphone - cli 创建的所有内容都位于 ~/.vphone/ 目录下该目录独立于代码库和 .app以确保签名捆绑包可移植。可通过 $VPHONE_ROOT 重定向整个目录树~/.vphone/用户数据根目录可通过 $VPHONE_ROOT 覆盖整个位置~/.vphone/VMs/VM 捆绑包每个 VM 对应一个目录这是库目录可通过 $VPHONE_LIBRARY_ROOT 覆盖~/.vphone/ipsws/下载的 iPhone 和 cloudOS IPSWs在 VMs 之间缓存并复用~/.vphone/tools/fw prepare 期间获取的缓存 APFS 密封卷工件apfs_sealvolume_~/.vphone/debs/jb/exp CFW 安装时放入访客系统的缓存 .deb 包如 Sileo、apt 等~/.vphone/venv/自动配置的 Python 环境参考 Python 运行时可通过 $VPHONE_VENV_DIR 覆盖。优先级单项覆盖$VPHONE_LIBRARY_ROOT、$VPHONE_VENV_DIR优先于 $VPHONE_ROOT$VPHONE_ROOT 优先于默认的 ~/.vphone。ipsws/、tools/ 和 debs/ 缓存始终直接位于活动根目录下。SIP/AMFI 放宽选项选项 A完全禁用 SIP然后通过启动参数禁用 AMFI最宽松。1. 在恢复模式长按电源键 → 终端中csrutil disablecsrutil allow - research - guests enable。2. 重启进入 macOS 并设置 AMFI 启动参数需要完全关闭 SIP 才能生效sudo nvram boot - argsamfi_get_out_of_my_way 1 - v设置后重启。选项 B保持 SIP 开启仅调试模式放宽然后使用 amfidont 将二进制文件列入白名单系统全局保留 AMFI 启用。1. 在恢复模式中csrutil enable --without debugcsrutil allow - research - guests enable。2. 重启进入 macOS 并运行vphone - amfidont本地构建时使用 .build/vphone - cli.app/Contents/Resources/vphone - amfidont。测试环境主机iPhoneCloudOSMac16,1127.0b217,3_18.6.2_22G100 26.1 - 23B85Mac16,826.5.117,3_26.0_23A341 26.1 - 23B85Mac16,826.5.117,3_26.0.1_23A355 26.1 - 23B85Mac16,1226.317,3_26.1_23B85 26.1 - 23B85Mac16,1226.317,3_26.3_23D127 26.1 - 23B85Mac16,1226.317,3_26.3_23D127 26.3 - 23D128Mac16,1226.317,3_26.3.1_23D8133 26.3 - 23D128Mac16,1126.217,3_26.4_23E246 26.4 - 23E5207qMac16,1126.217,3_26.5_23F77 26.4 - 23E5207qMac16,1127.0b217,3_26.5.2_23F84 26.4 - 23E5207qMac16,626.4.117,3_26.6_23G71 26.4 - 23E5207qMac16,1127.0b217,3_26.6.1_23G83 26.4 - 23E5207qMac16,1127.0b217,3_27.0_24A5380h 26.4 - 23E5207qMac16,626.4.117,3_27.0_24A5390f 26.4 - 23E5207qMac16,626.6.117,3_27.0_24A5408d 26.4 - 23E5207qMac16,1127.0b217,3_27.0_24A5418b 26.4 - 23E5207qMac16,1127.0b217,3_27.0_24A5424a 26.4 - 23E5207q常见问题解答zsh: killed ./vphone - cliAMFI/调试限制未被绕过请参考前提条件设置 amfi_get_out_of_my_way 1 或使用 amfidont。“Virtualization is not available on this hardware”你的 Mac 本身是一个 VMPV 3 访客启动不能嵌套请使用非嵌套的 macOS 15 主机。卡在 “Press home to continue”通过 VNC 连接并右键点击双指点击模拟主屏幕按钮。系统应用无法安装在 iOS 设置过程中不要选择日本或欧盟作为地区VM 无法满足额外的监管检查可选择如美国等地区。应用启动时崩溃错误代码为 EXC_GUARD / GUARD_TYPE_MACH_PORT使用 vphone - cli fw patch --variant --force - exc - guard 重新打补丁然后重新恢复/安装参考 #291。iOS 18 基础版本始终会出现此问题。安装 .ipa/.tipa使用运行中的 VM 的安装菜单拖放或文件选择器。cfw install 在重新签名系统二进制文件如 Campo时卡住内存无限增长这是 ldid - procursus 版本 2.1.5 - procursus7当前 Homebrew 稳定版已知的 bug。bytes(uint64_t) 调用 __builtin_clzll(0) 时没有零保护这是未定义行为在此构建中解析为 0 长度导致无符号循环计数器下溢ldid 会不断向不断增长的缓冲区写入一个字节而不终止。任何包含整数值恰好为 0 的权限列表一些真实的 Apple 系统二进制文件有这些都会触发此问题。上游已修复但尚未发布标签版本可从源代码重新构建brew install --HEAD ldid - procursus brew link --overwrite ldid - procursus。如果已经遇到此问题先杀死卡住的 ldid 进程sudo kill - 9。自动化vphone - cli 提供了一个主机控制套接字/vphone.sock用于程序化控制如截图、触摸、滑动、硬件按键、剪贴板等每个操作都会返回一个内联截图可用于 AI 驱动的端到端测试。可参考 vphone - mcp 了解包装它的 MCP 服务器。致谢wh1te4ever/super - tart - vphone - writeup
返回列表