从今年年初开始,看川就留意到零碎的关于 iOS vphone 虚拟机的消息。最开始没太关注,没想到经过开发者的不断优化,vphone 虚拟机已经被做到了零门槛使用。从相关业务数据分析来看,vphone 已经在被黑灰产使用,需要安全相关的开发者特别关注。
vphone 是什么?
iOS vPhone 虚拟机源于苹果的一项技术泄露。2025 年底,研究员 @matteyeux 在扫描苹果 Private Cloud Compute (PCC) 固件时,意外发现了一个名为 vphone600ap 的组件预置了虚拟 iPhone 的架构,很可能是 Apple 为内部安全研究准备的工具。
这一发现很快引起了众多安全研究人员的注意。开发者 wh1te4ever 于 2 月底发布了 writeup 和工具代码,极大地推动了项目的普及。同时,Lakr233 发布了 vphone-cli,将整个流程自动化封装,进一步降低了使用门槛。
为什么能做到?
同架构的基础优势
Apple Silicon (M 系列) 和 iPhone (A 系列) 使用相同的 ARM64 指令集。macOS 的 Virtualization.framework 提供原生性能的 ARM 虚拟化支持,使 Mac 在硬件层面完全有能力运行 iOS 内核。
Intel Mac 无法实现,这是架构层面的硬性限制。
私有 API
Virtualization.framework 的公开 API 只支持 macOS 和 Linux 虚拟机。但框架内部有个未公开的私有类 _VZMacHardwareModelDescriptor,它的 setPlatformVersion: 方法接受整数参数:
PV = 1 // macOS 虚拟机
PV = 3 // vphone 虚拟 iPhone
虚拟 iPhone 的创建过程依赖 11 个私有 API,包括自定义 ROM、DFU 模式、GDB 调试端口、SEP 协处理器配置、USB 多点触控等。
使用这些私有 API 还需要 5 个特殊 Entitlements:
<key>com.apple.private.virtualization</key>
<key>com.apple.private.virtualization.security-research</key>
<key>com.apple.security.virtualization</key>
<key>com.apple.vm.networking</key>
<key>com.apple.security.get-task-allow</key>
这些权限正常情况下只有苹果签名的二进制才能使用,要绕过这个限制必须禁用 SIP(系统完整性保护)。
与 Xcode Simulator 的区别
vphone 虚拟机和 Xcode 模拟器虽然都是用于在 macOS 上运行 iOS 环境的工具,但他们有明显不同:
| 对比项 | vphone 虚拟机 | Xcode 模拟器 |
|---|---|---|
| 原理 | 基于 Apple Private Cloud Compute (PCC) 技术,使用 Virtualization 框架实现硬件虚拟化。 | 基于 macOS 的模拟环境,使用 CoreSimulator 框架实现软件模拟。 |
| 运行环境 | 运行真实的 iOS 固件,模拟完整的 iOS 设备硬件,包括CPU、内存、存储、SEP 协处理器(能力上有缺失)等。 | 运行针对 macOS 编译的 iOS 运行时库,利用 macOS 硬件资源,仅模拟 iOS 应用运行环境。 |
| 系统启动 | 完整的 iOS 引导流程(从 bootloader 到内核加载) | 直接启动 iOS 运行时,没有引导过程。 |
| 系统完整性 | 完整的 iOS 系统(包括内核、驱动、系统服务等)。系统应用层排除必须使用硬件能力的,都是可以使用的。 | 仅包含 iOS 应用运行所需的核心组件。系统应用层很多应用缺失。 |
| 其他 | 可进行系统快照和回滚,便于对自动化环境的管理。 | - |
如何安装
原始版本的 vphone 固件并非来自单一来源,而是将 iPhone OS 和 cloudOS PC C两份固件进行"杂交"。PCC 固件包含 vresearch101 平台的引导链(iBSS/iBEC/LLB/内核等),而 iPhone IPSW 包含完整的iOS用户空间(Cryptex/SystemOS/AppOS)。
手动处理两份固件的合并、特别是启动引导过程中签名检查绕过步骤比较多,参考:
iOS虚拟手机实现原理解析
super-tart-vphone-writeup
Github 上已经有开发者将修改好完整镜像发布:vphone-aio,可直接运行使用。
关闭 SIP
# 恢复模式下执行
csrutil disable
csrutil allow-research-guests enable
# 重启 macOS 后执行
sudo nvram boot-args="amfi_get_out_of_my_way=1 -v"
安装必要工具
brew install git-lfs wget zstd libimobiledevice
运行 vphone-aio.sh
git clone vphone-aio 后,运行 vphone-aio.sh,会下载完整镜像文件(10多G),下载完成后自动解压并启动。使用 vnc 客户端连接:vnc://127.0.0.1:5901,密码为:alpine,运行效果:

运行后,在 Xcode 中可以识别为真实的 iOS 设备,可以进行开发调试 APP。
对 APP 安全的挑战
检测难度增大
传统的越狱检测手段失效了,vphone 不是越狱手机,可以没有 MobileSubstrate、Cydia,也没有越狱特征文件、甚至也不需要依赖注入。
很容易规模化
以往需要构建批量的真实 iOS 环境,是需要真实的 iOS 设备或刷机而来的。vphone 之后事情变得简单了,只要 macOS 系统硬件能力允许,可以一次性启动多个 vphone 虚拟机,每一个都是完全隔离的真实 iOS系统。 理论上,利用群控、自动化软件,可以批量快照克隆,批量注册账号,批量操作,完成后快照回滚清除痕迹。这套流程的成本极低,自动化程度极高,对账号工厂、黑产薅羊毛、虚假流量生成都是巨大的能力升级。
vphone 虚拟机已知的问题
经过看川测试后发现:vPhone 虚拟机在反侦测识别方面还没有做到很全面,依然可以通过设备特征判断出来。已知的特征项有:
- 硬件安全认证功能不可用,无法模拟安全硬件能力;
- 传感器不可用:没有蜂窝网络、NFC(依赖硬件的能力都不支持);
- 点击事件异常:和使用外置模拟器点击的效果一致,没有真实的接触面积和压力变化;
- 版本兼容性:泄漏的 PCC 固件仅支持 vresearch101 硬件(PV=3类型),模拟的是 iPhone 15 系统环境,适配 iOS 26.1 系统。在新系统或其他设备上使用需要进行适配,难度极大。
- CPU信息:
HW_MODEL、HW_MACHINE以及 MTLCreateSystemDefaultDevice GPU 名称异常。

留言板