5 分钟开出第一台虚拟 iPhone:vphone-cli 零基础上手实录
5 分钟开出第一台虚拟 iPhonevphone-cli 零基础上手实录【免费下载链接】vphone-cli项目地址: https://gitcode.com/GitHub_Trending/vp/vphone-cli在 Mac 上跑一台 iPhone这件事曾经只属于安全研究圈子的定制化玩具要么依赖昂贵的云端设备要么需要在一堆晦涩的固件脚本里折腾。vphone-cli 的出现把这个门槛压到了一个普通命令行用户也能接受的程度——它基于 Apple 官方的 Virtualization.framework 与 PCC 研究虚拟机Research VM跑的是真实的 iOS 系统自带越狱环境可以用于安全研究、逆向调试、自动化测试甚至是给 AI Agent 提供可编程的移动端操作接口。社区里关于黑灰产利用 iOS 虚拟化搞云手机农场的讨论、以及Mac 上跑一台能被 AI 操作的虚拟 iPhone的实践文章都指向同一个事实这套技术路径已经从实验室走向了可复现的开源工程。本文不打算铺开讲补丁与内核只做一件事把从零到出现一台可操作的虚拟 iPhone 的完整路径用仓库里的真实文档与源码逐步拆给你看并在最后给出第一次启动前的验证清单。开始之前先说明一个事实边界5 分钟指的是下载解压、授权、安装核心 Bundle、点击新建这一整套操作的步骤节奏首次建机需要下载 IPSW、在线恢复签名票据并打补丁耗时取决于网络与磁盘而第二次起得益于模板机制创建一台新机器可以压缩到秒级。一、门槛先看清楚环境要求先读仓库根目录的 README.md它把硬性条件写得很克制必须是物理 Apple Silicon Mac且运行 macOS 15 或更新版本。PV3 研究型访客不能在嵌套的 macOS 虚拟机里运行README 原话是 It does not work in a macOS VM。磁盘空间每台 VM 默认 64 GB 虚拟磁盘固件还要再占一些。这是一个容易在第一步就被忽略的隐性门槛。网络连接恢复系统需要在线获取签名票据signing ticket。调整安全设置需要进入 macOS Recovery 执行两条命令后重启。安全设置这条很多新手会在这里卡住。README 推荐的是保留 SIP的温和路径csrutil enable --without debug csrutil allow-research-guests enable注意这两条命令要在 Recovery 模式的终端里执行。它只是放宽了调试相关的限制SIP 本身仍然开启。完整的两级安全策略在 host-setup.md 中有详细说明——你可以选择彻底关闭 SIP路径 A还要设置amfi_get_out_of_my_way1引导参数也可以保留 SIP 只放宽调试限制然后用随包附带的vphone-escalator对签名后的vphone-vm二进制做 AMFI 白名单路径 B。绝大多数普通用户走路径 B 就够了。另一个容易踩的坑是宿主本身的环境校验。打开 VPhoneHostPreflight.swift 可以看到host preflight启动时会先执行let probe try VPhoneProcessRunner.runCapturing( URL(fileURLWithPath: /usr/sbin/sysctl), [-n, kern.hv_vmm_present], ) if probe.succeeded, probe.stdout.trimmingCharacters(in: .whitespacesAndNewlines) 1 { throw ValidationError(This Mac is running inside a VM, so vphone-vm cannot start a guest. ...) }也就是说如果你的 Mac 本身就是一台虚拟机云 Mac、嵌套虚拟化kern.hv_vmm_present会直接拒绝启动报 Virtualization is not available on this hardware。这不是安装问题是硬性环境不符。顺带一提distributed 的.bundle运行时不需要 Xcode、Python 或 Homebrew这是它面向零基础用户的重要底气。二、下载与解压认准-notarized后缀项目发布的下载物在 Documents/Downloads/README.md 里讲得很清楚每次 release 最多有三个文件文件内容vphone-launchpad-version-notarized.zipLaunchpadApple 签名并公证能直接下载的就选它vphone-launchpad-version.zipLaunchpad未公证首次打开会被 macOS 拦截VPhone-version.zipVPhone.bundleLaunchpad 会自动下载安装无需手动处理不是每个版本都做了公证。比如 2.0 系列只有 2.0.4、2.0.5、2.0.6、2.0.8、2.0.9 是公证版没有 2.0.72.1 系列混有公证与非公证版本而 2.2 到 2.9 各系列的主版本基本都公证了。所以拿到手的第一件事去 release 页面确认存在-notarized文件而不是随手下载最新 tag。如果最新版没有公证产物就从 Downloads 文档里挑一个公证版。下载后解压、打开 Launchpad这是整个流程中第一个图形入口。注意这里有个架构概念值得建立Launchpad 只是前端管理界面跑虚拟机这件事发生在它管理的VPhone.bundle里。社区里解压后没出现 iPhone的排查文章核心结论之一就是核心 Bundle 与图形入口分离——解压出 Launchpad 不等于有了虚拟 iPhone还需要下一步安装 VPhone.bundle。三、Host Setup开发者工具授权与 Helper 安装打开 Launchpad 后第一步是Host Setup授予 Developer Tools 访问权限并安装 helperSMJobBless 特权辅助进程。这一步的背后是 host-setup.md 描述的双二进制架构vphone-cli是无私有 entitlement的编排入口真正干活的vphone-vm是携带 Apple 私有虚拟化 entitlement 的签名 GUI/VM 进程。AMFI 可能拒绝未白名单的vphone-vm——此时vphone-cli host preflight会打印出完整的sudo .../vphone-escalator allow .../vphone-vm命令按提示执行即可。在 Launchpad 内部Bundle 的检查分两步执行策略异常Execution Policy exception加上host preflight复核。每次安装新版本、每次重新构建签名都需要重新执行allow。这条验证命令值得记住vphone-cli host preflight输出Host preflight passed: vphone-vm can launch才算通过第一关。四、Core Bundle安装 VPhone.bundle进入Core Bundle页面点击Download and Install。Launchpad 会从 GitHub release 拉取VPhone.bundle安装流水线在 VPhoneLaunchpadCoreBundle.swift 里写得明明白白每一步都有状态跟踪prepare → download → verify(SHA-256) → install(管理员权限) → policy(执行策略) → preflight(宿主预检)下载过程边流式写文件边计算 SHA-256见 VPhoneLaunchpadDownload.swift1 MB 缓冲分块哈希校验失败直接拒绝安装防止下载被篡改。版本匹配规则也在这份文档里Launchpad 与 VPhone.bundle 必须属于同一个系列——系列指版本号前两位例如 Launchpad 2.2.3 属于 2.2配任意 2.2.x 的 VPhone.bundle。同系列内装最新补丁版本。Launchpad 会拒绝过旧的 Bundle但它不会自动升级自己升级 Launchpad 需要手动替换 App。五、New Machine选择固件配对完成创建这是开出第一台虚拟 iPhone的核心步骤。在Machines页面点击New Machine填名字、选位置然后会看到固件配对选择。整个建机流程在 create-and-run.md 里有完整定义一条命令的完整形态是vphone-cli host preflight vphone-cli vm create myphone \ --iphone-source /path/to/iPhone17,3_Restore.ipsw \ --cloudos-source /path/to/cloudOS.ipsw注意它需要两个 IPSWiPhone 恢复固件 兼容的 PCC/cloudOS 固件。为什么会需要两个因为整个方案是混合恢复先用 cloudOS 恢复出一个临时 VM 抽取 GPU 驱动再执行真正的混合 iPhone 恢复。GPU 驱动按 cloudOS 版本缓存在~/.vphone/gpu-drivers/所以同一 cloudOS 的第二台机器可以跳过临时恢复。固件配对必须查兼容表。compatibility.md 给出了实际验证过的组合最稳妥的两组是iPhone 恢复 IPSWPCC/cloudOS IPSW验证结果17,3_26.6.2_23G9026.4-23E5207q打补丁、恢复、CFW、启动、vphoned ping 均通过17,3_27.0_24A43526.4-23E5207q同上全部通过关键知识点cloudOS 26.4 测试版26.4-23E5207q是目前唯一同时包含vphone600ap身份访客的内核、SEP、设备树来源的镜像。26.4 之后的 cloudOS 都只列了 PCC 板卡和vresearch101ap没有vphone600系列组件一个都引导不了。这也是为什么新手如果手滑选了新版 cloudOS会在fw prepare阶段直接被拒。不确定时用vphone-cli fw catalog查当前目录。默认参数是 8 核 CPU、8192 MB 内存、64 GB 磁盘见 VPhoneVirtualMachineCreateCommand.swift网络模式 NAT。整条流水线为prepare固件准备→ firmware patch补丁→ online DFU restore在线恢复→ CFW install挂载安装自定义固件→ first boot首次引导验证CFW 安装环节需要 root 权限。而在 2.9 系列vm create默认还会多一层模板机制第一次建机时完整跑一遍流水线并把结果冻结成模板之后相同固件、相同参数的vm create直接从模板克隆——克隆加首次引导检查只需几秒不需要 root不需要再下载 IPSW。这就是文章标题里5 分钟开出第二台、第三台的实际支撑。六、第一次启动的验证清单建机成功的标志在 create-and-run.md 里写得很明确流水线末尾会看到两行First boot: vphoned ping succeeded JB VM created; vphoned connected但此刻你面前并不会有一个运行中的窗口——这是新手最容易误解的一点创建流程里的首次引导是一次临时 GUI 验证启动vphoned 守护进程应答后验证用 VM 会被自动停止。所以建机完成≠GUI 正在运行要正式使用还得手动启动vphone-cli vm list # 查看机器与运行状态 vphone-cli vm launch myphone # 启动出现 VM 窗口并持续运行 vphone-cli vm stop myphone # 从另一个终端停止对应的启动逻辑在 VPhoneVirtualMachineLaunchCommand.swiftvm launch会先执行 host preflight 再启动并把访客串口控制台接到终端。因此第一次启动的验证清单可以浓缩成四层与社区流传的四层排查法一一对应第一层宿主权限与研究型访客配置。csrutil allow-research-guests enable是否生效host preflight是否通过vphone-vm是否被 AMFI 拦截失败时先看 troubleshooting.md 的第一条——vphone-vm is killed before the VM opens运行vphone-cli host preflight它会给出可执行的修复命令。第二层核心 Bundle 与图形入口分离。Launchpad 与 VPhone.bundle 版本系列是否匹配Bundle 是否真的装上了vphone-launchpad-cli status可查若只解压了 Launchpad 却没装 Bundle界面自然不会有机器可建。第三层固件配对与在线恢复。iPhone IPSW 与 cloudOS 是否属于已验证配对cloudOS 是否是含vphone600ap的26.4-23E5207q恢复过程是否真的能连上 Apple 拿票据这三项任一不满足流水线都会在中途失败。第四层建机完成与 GUI 运行状态的区别。看到 vphoned ping succeeded 只证明验证启动时守护进程应答过不等于 VM 在运行。启动用vm launch name创建后没窗口是正常现象不是 bug。验证运行状态最直接的命令来自 Launchpad 的 CLI 封装launchpad-cli.mdvphone-launchpad-cli vm start research-01 --wait # 等待 vphoned 应答 vphone-launchpad-cli guest rpc research-01 device.infoguest rpc device.info能拿到访客的设备信息这是判断系统真的起来了的最强信号。另外注意当前越狱工作流不会安装 SSH 或 VNC 服务如果在引导时卡在 Press home to continue用 VM 窗口的 Keys → Home 解锁即可——别去找不存在的 VNC 端口。七、5 分钟之外回到开头那句话5 分钟买的是零基础也能走通全流程这件事本身——下载解压、授权 helper、安装 Bundle、点几下鼠标完成建机每一步都有文档和源码支撑失败时每一层都有对应的排查路径。而它真正值钱的地方在 5 分钟之外模板让第二台机器秒级克隆、快照让状态随时回滚、vm export/import支持整机备份迁移、--api-listen 127.0.0.1:8765能把整套系统变成可编程的自动化接口。对开发者和安全研究者来说一台能开、能关、能复制、能接管屏幕输入输出的真 iOS 系统等于把过去要排队借真机、要守着越狱折腾半天的场景压缩成了几行命令。这套工具同时也在提醒我们iOS 生态的不可虚拟化假设正在被技术演进改写。虚拟 iPhone 能做什么、该被用来做什么是下一个值得整个社区继续讨论的问题。【免费下载链接】vphone-cli项目地址: https://gitcode.com/GitHub_Trending/vp/vphone-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

MyBatis 源码精读:初始化、执行链路、缓存与类型转换全解析

MyBatis 源码精读:初始化、执行链路、缓存与类型转换全解析

我这些年读过不少开源框架源码,MyBatis 是少有的、源码读起来不吃力的一个。它不像 Spring 那样动不动就从注解扫描绕一大圈,也不像 Netty 那样在并发模型上反复横跳。MyBatis 的核心流程基本就是“配置文件 → 解析成对象 → 拿对象去执行 SQL → 处理结…

2026/10/10 22:15:03 阅读更多 →
YOLOv5+ArcFace+活体检测一体化人脸系统实战指南

YOLOv5+ArcFace+活体检测一体化人脸系统实战指南

简介:本资源是一套面向深度学习初学者与计算机视觉开发者的实战型人脸识别学习包,聚焦YoloV5目标检测、ArcFace特征提取与活体检测三大核心技术的协同实现,解决真实场景下人脸定位、身份识别与防伪验证的一体化工程问题。压缩包共54个文件&am…

2026/10/10 22:15:03 阅读更多 →
Python电商数据分析源码:订单清洗、销售趋势到RFM分层实战

Python电商数据分析源码:订单清洗、销售趋势到RFM分层实战

简介:面向计算机、自动化等相关专业学生与从业者,这份基于Python的电商平台数据分析系统课程作业资源,覆盖从数据读取、数据清洗、可视化分析到分析报告输出的全流程,并专门处理了支付时间间隔过长、订单金额或支付金额为负等异常…

2026/10/10 22:15:02 阅读更多 →

最新新闻

Python情感分析源码实战:53k对话清洗、SnowNLP训练与Flask接口全链路

Python情感分析源码实战:53k对话清洗、SnowNLP训练与Flask接口全链路

简介:这是一套面向Python初学者与NLP入门者的情感分析系统源码,围绕文本情感倾向判断这一典型任务,整合了数据清洗、模型训练与情感分类的完整流程,适合用于课程设计、毕业项目或自然语言处理练手场景。压缩包共34个文件&#xff…

2026/10/10 23:36:09 阅读更多 →
预测分析表自动生成:结构化决策证据链实战方案

预测分析表自动生成:结构化决策证据链实战方案

简介:本资源是一份面向编译原理课程学习者与C语言实践者的LL(1)预测分析表自动生成实现方案,聚焦于FIRST集与FOLLOW集的迭代计算逻辑及预测分析表构造这一核心难点。压缩包共12个文件,含11个文本文件(用于文法输入、测试用例及结果…

2026/10/10 23:36:09 阅读更多 →
肝病知识图谱问答系统实战:从压缩包到KBQA全链路

肝病知识图谱问答系统实战:从压缩包到KBQA全链路

简介:这份资源是面向医疗信息化与知识图谱方向的开发者、学生及NLP爱好者的肝病问答系统完整源码包,基于Python实现,围绕肝病知识图谱完成实体关系构建、自然语言问题解析与答案检索,适合作为知识图谱入门到进阶的实战参考。压缩包…

2026/10/10 23:35:08 阅读更多 →
基于Python深度学习的高分城市遥感图像水体提取系统实战

基于Python深度学习的高分城市遥感图像水体提取系统实战

简介:这份资源是面向计算机相关专业在校生与项目实战学习者的毕业设计级源码包,主题为基于Python深度学习的高分辨率城市遥感图像水体提取系统。项目已通过导师评审并获98.5分,适合用作毕设、课程设计、期末大作业或竞赛初期立项演示&#xf…

2026/10/10 23:35:08 阅读更多 →
生态破壁!vivo 智慧生活内测接入 Home Assistant:米家、HomeKit 设备一把梭

生态破壁!vivo 智慧生活内测接入 Home Assistant:米家、HomeKit 设备一把梭

生态破壁!vivo 智慧生活内测接入 Home Assistant:米家、HomeKit 设备一把梭 【免费下载链接】core :house_with_garden: Open source home automation that puts local control and privacy first. 项目地址: https://gitcode.com/GitHub_Trending/co/…

2026/10/10 23:35:08 阅读更多 →
人员状态检测数据集实战:7z解压、格式校验与YOLOv8训练

人员状态检测数据集实战:7z解压、格式校验与YOLOv8训练

简介:这份数据集面向目标检测算法工程师与计算机视觉学习者,提供人员状态识别所需的跑睡、抽烟、打电话、跌倒五类标注数据,可直接用于训练YOLO、Faster R-CNN等检测模型,也适合作为安防监控、智慧工地、养老看护等场景的算法验证…

2026/10/10 23:35:08 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →