据InfoQ报道,一个名为vphone-cli的开源项目已能让完整的iOS 27系统以虚拟机形式在Apple Silicon芯片上运行。该项目选择苹果自家的Virtualization.framework作为底层支撑,而不是沿用传统的模拟思路,从而为安全研究、逆向工程以及iOS自动化测试打开了新的操作空间。

vphone-cli做了什么:把整条部署流程自动化

vphone-cli延续了开发者wh1te4ever此前的研究方向——在不借助仿真技术的前提下让虚拟iPhone跑起来,并在此基础上把整套操作自动化。整个流程包括下载iOS固件、对启动链进行修补、执行DFU恢复,直至完成第一次开机启动。最终得到的虚拟iPhone不仅允许以root权限通过SSH登录,还能借助VNC查看并操作图形界面。

它复用了苹果哪些组件:PCC项目中的iPhone研究环境

苹果官方从未把iOS虚拟机正式开放给开发者或安全研究人员使用。不过,该公司为“私有云计算”(PCC)打造的技术中包含一个“iPhone研究环境虚拟机”,其本意就是借助虚拟研究环境推动该平台上的安全研究。vphone-cli做的事情,基本是把这些组件拼装到一起,并让它们更简便地转化为一台可以投入使用的iPhone虚拟机。

与Xcode模拟器的差别:用户空间子集遇上内核级环境

Xcode自带一个iPhone模拟器,它只包含iOS用户空间组件的一个子集,经过适配可运行在macOS硬件上。这个模拟器存在多项限制,例如相机访问、蓝牙、Metal、App Store应用安装以及iCloud等功能支持有限。另外,它所使用的SDK目标与实体iPhone并不一致,这可能引发细微的行为差异。换言之,在模拟器中进行的测试,未必能完整体现应用在真实硬件上的表现。

在Hacker News的相关讨论中,用户kridsdale1对iOS模拟器与vphone-cli的区别给出了一种实用的归纳:iOS模拟器本质上一直是让iOS框架完全原生运行在macOS上,将其理解为另一种窗口管理器最为贴切,但那些应用本身其实是原生的Mac进程。用户可以借助终端里的top、ps和lldb等命令,像查看其他进程那样查看并调试它们,图形界面则只是通过Simulator Mac应用容器来呈现。

同一讨论帖里,用户landr0id表示,vphone-cli对安全研究有价值,因为可以开展内核调试和设备检查,而这些在模拟器中做不到。用户afavour同样强调了模拟器测试与真实硬件测试之间的差别,并总结说:这种差异在问题出现之前并不重要,可一旦出了问题,想搞清楚发生了什么就会令人抓狂。

在LinkedIn上,资深iOS工程师Daniyar Kurmanbayev指出,能够启动真实的iOS固件、通过SSH登录并复现环境,会让安全与底层调试变得更为切实可行。Kareem Hesham则补充称,利用Virtualization.framework实现完整的iOS启动,是移动安全研究可访问性方面的一次重大转变,它弥合了硬件锁定环境与可扩展自动化之间的鸿沟,但也带出一个耐人寻味的问题:所谓“封闭花园”到底有多少是靠策略而非技术壁垒维系的。

官方支持仍是未知数,使用风险需要自行判断

需要特别说明的是,苹果并未官方支持以这种方式使用其iOS固件。因此,PCC虚拟研究环境在未来的版本中是否还会继续包含运行iOS虚拟机所必需的组件,目前尚无明确答案。

小结:vphone-cli把iOS 27的完整虚拟化流程自动化,并复用PCC项目中的研究组件,为安全研究者提供了模拟器之外的内核级调试环境。但这一做法并不在苹果官方支持范围内,后续PCC版本是否保留相关组件仍存在不确定性。