借助itunesstored与bookassetd的安全漏洞,Geek们正通过修改MobileGestalt文件,把iPad的多任务与Stage Manager等功能移植到iPhone上。
在Geek的世界里,设备身份从来不是绝对的,而是可以被“说服”的。最近,一项由itunesstored与bookassetd触发的沙盒逃逸漏洞流传开来,让不少技术玩家意识到一个久违的机会出现了。这个漏洞可以写入本该被严格保护的路径,而这些路径之中正包含一份极具魔力的文件 MobileGestalt.plist。
MobileGestalt就像设备的身份证。设备型号、颜色、硬件能力,还有更隐秘的特性,例如是否支持Stage Manager、是否带Dynamic Island、是否拥有Multitasking,这些都藏在里面。多年来,苹果对这些键值加密,但社区逐渐拆解出相当可观的一部分。这让Nugget、Misaka、Picasso之类的工具得以存在,因为它们的本质就是与MobileGestalt打交道。

这一次,开发者Duy Tran展示的画面更是引起轰动。他的iPhone出现了iPadOS风格的多窗口、Dock栏以及Stage Manager。不是仿真,也不是主题替换,而是系统级别的功能直接亮起。核心原因在于新的漏洞支持写入MobileGestalt的缓存。
漏洞覆盖范围广,从iOS初版一路到iOS 26.2 Beta 1都能运行。之前它常被用于iCloud绕过,因为它能写入用户权限范围内的大多数路径,而无法触碰root级目录。对于接触过越狱生态的人来说,这种权限已经足够可怕也足够好玩。
第一步是获取MobileGestalt文件本体。虽然市面上有一些Shortcuts脚本可以抓取它,但很多已经被修补。极客们更倾向于自己动手建一个Xcode应用,从系统共享容器中把MobileGestalt.plist读出。苹果目前依旧允许应用读取这个路径,因此过程意外简单。读完后,通过Files应用导出,再用AirDrop送到电脑上。
接下来是这次实验的核心问题。你需要找到让iPhone误以为自己是iPad的那一组键值。MobileGestalt的键是加密的,长得像被猫踩过键盘一般,但含义却清晰而直接。比如有的代表设备类型,有的代表是否支持Medusa多任务,有的代表是否能启用Stage Manager。
要启用完整的iPadOS多任务体验,需要几个关键能力。包括告诉设备自己是iPad,让它开启Medusa的悬浮应用、覆盖应用、固定应用,支持画中画镜像,以及最重要的Stage Manager开关。社区已经整理出这些键值,极客们要做的只是把它们写入自己的MobileGestalt缓存。
难点在于CacheData区域看上去一片乱码,无法直接编辑。原因在于数据被进一步封装,无法逐项定位。解决办法是转头去看libMobileGestalt.dylib。虽然这个库无法通过普通应用直接读出,但可以dlopen后解析其段结构,从中找到特定键的偏移位置。
找到偏移位置,就相当于找到了在CacheData中“挖洞”的方法。极客们通常用一个小型Swift应用打开库文件,定位像DeviceClassNumber这种关键字段,然后再用基于Duy与Hana Kim旧工具改造的Python脚本,向指定偏移写入新的加密键值。
整个过程听起来像是在和一座沉睡的迷宫沟通。你必须用它能理解的语言,用它认得的符号去告诉它:你不再是一部iPhone,你是iPad。
当脚本顺利运行时,设备会接受这场“身份迁移”。但成功率并不高,往往需要重复运行多次。最终修改写入后重启,设置应用中的多任务选项便会悄然出现,那是iPadOS才拥有的面孔。
最后,运行Python脚本需要在macOS建立虚拟环境,安装依赖,再取得设备的UDID。工具选择宽松,libimobiledevice、Finder或3uTools都能满足需求。
本文译自 iDevice Central,由 BALI 编辑发布。
# 注:相关操作流程和代码详见原文

2025王摸鱼秋款卫衣,玩梗系列