很多人都见过网上各式各样号称可以在电脑上跑 iOS 的工具,大多只是套壳美化,或者借 Mac 虚拟机中转一下,根本算不上真正的系统模拟。而开源项目 Inferno 的出现,打破了这个局面。
![]()
在普通电脑屏幕上,你能看到完整的 iOS 桌面,状态栏、Dock 栏、应用图标一应俱全,滑动锁屏、点开应用都有正常反馈,系统信息里明确标注这是一台 iPhone,但它的底层硬件,和苹果没有半点关系。
这个由 ChefKiss 团队维护的项目,在开源平台上线之后,很快收获了大量开发者的关注,星星数量已经接近四千,在极客圈子里掀起不小的讨论。
![]()
不少人第一眼会误以为,团队从零写了一套全新的模拟器,其实并不是。Inferno 的根基是大家熟悉的 QEMU,属于它的一个衍生分支,代码里保留了 QEMU 经典的硬件模拟、指令翻译、图形交互等基础模块。
团队真正在做的核心工作,是往里面补齐苹果 A 系列芯片、配套外设以及安全组件的模拟逻辑。它的适配范围也不局限于普通 PC,像任天堂 Switch 这类和苹果毫无关联的设备,爱好者同样可以拿来尝试。现阶段项目的首要目标机型是 iPhone 11,能够稳定启动的系统版本,也只锁定在 iOS 14.x,更远的机型和版本还处在规划和调试阶段。
![]()
很多人会好奇,这么多年过去了,为什么直到现在,才出现一个能真正把 iOS 完整引导到桌面的模拟器?
答案藏在苹果一套层层上锁的安全体系里。
iOS 的启动流程从一开始就和硬件深度绑定,SecureROM 作为固件起点,每一步校验都不能出错,用户数据分区的解密,全权交给独立的安全引擎 SEP 负责,这部分的内部细节苹果几乎不会对外公开。以往很多尝试卡在半路,恰恰就是没能搞定 SEP 的模拟。Inferno 最关键的突破,就是成功模拟出 SEP 的固件与 ROM,系统才有办法解开加密分区,顺利进入内核,再一步步加载到桌面。
![]()
我们平时在 Xcode 里面使用的 iOS 模拟器,本质上是另一套东西。它并不是模拟手机芯片,而是提供专门编译到 x86 架构的应用版本,直接在 Mac 上运行。早些年 Windows 平台上那些满天飞的 iOS 模拟器,套路基本都是装一个 Mac 虚拟机,再在里面跑 Xcode,只是换了一层包装。
安全领域的研究者其实很早就尝试过这条路,早些年的安全大会上,就有人成功把 iOS 内核引导到 QEMU 的命令行界面,也有安全厂商的研究员跑起来残缺版本的 iOS14。但仅仅停留在命令行,和成功加载 SpringBoard 桌面、实现基础交互,中间隔着巨大的技术鸿沟,Inferno 算是第一个跨过这道坎的项目。
![]()
按照项目文档的描述,目前 iPhone11 已经可以稳定进到 SpringBoard 桌面,也就是 iOS 的主界面,到这一步,意味着整个操作系统已经成功跑起来了。另一款目标机型 iPhone 6s Plus 的适配还在攻坚,虽然能够完成启动流程,但还没有可用图形界面。
除此之外,ARM 架构 Mac、iPad 等设备都写在了长期路线图里,iOS13、15 一直到更新的版本,团队都计划后续慢慢适配。还有一个有意思的特点,当前版本完全依靠软件渲染,不依赖宿主机的独立显卡,没有独显的轻薄本,反而在调试的时候少了很多额外的兼容麻烦。
这个项目里最反常识的设计,就是双虚拟机的工作模式。一套流程里面,分为主虚拟机和伴随虚拟机,iOS 系统运行在主虚拟机中,恢复刷机、网络相关的操作,都没办法由它独立完成。伴随虚拟机会通过虚拟 USB 通道和主虚拟机相连,刷机工具、固件传输、网络共享全部走这条虚拟链路。团队也提到,后续版本会优化架构,去掉伴随机的依赖,不过这个功能还没有落地。想要顺利跑起来,硬件门槛并不低,内存至少预留 6GB,磁盘也要准备 32GB 以上的空闲空间,给固件、镜像和系统分区存放文件。
![]()
想要自己动手编译部署,里面每一步都藏着不少细节。
不同的 Linux 发行版、macOS,官方都配套了对应的依赖安装命令,用各自包管理器拉取需要的库。拉取源码之后,子模块更新是绝对不能跳过的一步,一旦漏掉,编译的时候就会源源不断抛出文件缺失报错。Linux 环境下还容易碰到底层密码学库版本过低的问题,版本低于 3.10 的话,只能手动下载源码编译,文档里甚至附上了哈希校验的步骤。这一点很能看出开发团队的谨慎,通过校验摘要,避免源码包在镜像分发途中被篡改,规避供应链层面的风险。
系统启动之前,还要依次挂载七个不同用途的镜像,模拟成 NVMe 设备,每个镜像都要指定匹配的扇区参数,同时准备好两个内存盘,小的用于系统恢复,大的承担版本升级的任务。刷机命令需要在伴随虚拟机中执行,里面填写的 ECID 编号,必须和当前模拟的设备一一对应。文档还特意提醒,虚拟 USB 链路稳定性一般,刷机之前最好关掉 SSH 连接,避免资源抢占,导致恢复流程中途失败。
刷完固件,并不代表可以直接使用。因为 GPU 模拟模块还没有完成,系统默认的硬件渲染机制会直接崩溃,必须手动切换到软件渲染模式。开发者需要借助专门的补丁工具处理系统的共享缓存文件,同时禁用五个容易卡死系统的后台服务,其中四个和蜂窝基带通信相关,剩下一个是定位服务。道理很简单,基带硬件还没有实现模拟,一旦这些相关进程启动,就会持续报错卡死整个系统。这一套补丁流程,现阶段更适合在 macOS 环境操作,Windows 和 Linux 平台上的 APFS 驱动还没有经过充分测试,很容易出问题。
现阶段它的短板同样非常明显,很多大家熟悉的 iOS 功能都处于不可用状态。iCloud、App Store 完全无法访问,面容、指纹、锁屏密码、NFC 和 Apple Pay 全部失效,音频、基带还处在开发阶段。这些苹果服务依赖一套专属的解密指令,模拟器暂时没有办法完整复刻这套硬件指令,所以相关服务直接瘫痪。官方文档也标注了几条重要的安全提醒,不要设置锁屏密码,不要开启定位,尤其不要在里面执行抹掉所有内容的操作,这个操作会触发系统恢复流程,现有的文件系统补丁并不支持这个场景,很容易直接损坏系统镜像,只能从头再来。
开源许可方面,项目做了两层划分,继承 QEMU 主体代码使用 GPL v3 协议,团队自己新增开发的代码,则采用约束更强的 AGPL v3。之所以选择这个协议,是因为之前出现过第三方公司直接拿这份源码,封装成付费闭源产品对外售卖。按照 AGPL 的规则,如果有人把它改造之后作为线上服务提供给其他人,就必须同步公开所有修改后的代码。除此之外,项目还有独立的品牌标识使用限制。
![]()
还有一个很容易被忽略的细节,项目主页挂着一行标识,写明代码由人工编写,没有借助 AI 生成。在现在 AI 写代码越来越普及的大环境下,这样的声明,也算是团队一种鲜明的态度。整个搭建链路的门槛很高,双虚拟机、大量依赖包、源码编译、固件刷写、系统补丁,任何一个步骤出错,都要回头排查日志。好在团队把完整流程拆分成多个章节,从前期环境准备,到每一条执行命令、风险提示,全部写进文档,愿意沉下心研究的爱好者,可以一步步跟着尝试。
长久以来,苹果依靠软硬件一体化的封闭生态,把 iOS 牢牢锁在自家硬件上。市面上的各类所谓模拟器,大多只是视觉层面的模仿,根本触及不到系统底层。Inferno 的价值,不在于拿来当备用手机、日常刷 App,而在于它实实在在证明,完整模拟 iOS 的这条路是走得通的。它给安全研究员提供了低成本的调试环境,不用反复折腾真实 iPhone;也给底层系统爱好者,打开了一扇观察 iOS 内核运作的窗口。
当然我们也要客观看待,它距离稳定、流畅、功能完整的模拟器还有很远的距离,基带、音频、安全组件还有大量工作等待打磨。后续团队还会向着更多机型、更新版本的 iOS 发起适配。在软硬件绑定越来越紧密的今天,这类逆向和模拟项目,总能给圈子带来惊喜。它未必会走进普通用户的电脑里,但在系统底层研究、安全分析这个领域,这个项目的意义,已经足够厚重。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.