iOS 27 越狱实录:利用 usbliter8 为 iPhone 11 Pro 刷入自定义固件
iOS 27 越狱实录:利用 usbliter8 为 iPhone 11 Pro 刷入自定义固件
高风险警告
本文内容仅面向安全研究人员和有经验的开发者,用于个人设备研究。
刷入本文所述的自定义固件会彻底清除设备数据,并破坏 SEP、锁屏密码、Wi-Fi、基带、部分蓝牙功能以及 Apple 在线服务。
**请勿在主力设备上尝试。**目前仅支持备用的 iPhone 11 Pro。其他型号需要重新寻找内核及系统组件偏移,不能直接照搬本文参数。
操作前请确认设备归自己所有,并自行承担刷机失败、设备变砖及数据丢失等风险。
项目概述
这次实验的目标,是在 iPhone 11 Pro 上运行 iOS 27.0 Beta 2,并通过 usbliter8 将设备送入 PWN DFU 模式,随后恢复经过修改的自定义固件。
整个过程大致分为四个阶段:
- 使用 RP2350 开发板触发 SecureROM 漏洞;
- 制作并恢复自定义固件;
- 启动 SSH Ramdisk,提取设备相关文件;
- 完成正常启动、USB 网络共享和越狱环境部署。
目前这套方案只针对 iPhone 11 Pro 完成适配。由于不同设备的内核、DeviceTree 和系统组件偏移并不相同,其他机型需要单独分析。
一、准备硬件
usbliter8 利用了 Paradigm Shift 公开的 SecureROM 漏洞,需要通过搭载 RP2350 芯片的开发板触发。
该方案主要面向 A12、A13 设备,同时也支持使用 S4、S5 芯片的部分 Apple Watch 型号。
本次使用的硬件是:
- Raspberry Pi Pico 2
- 一根可以剪开的 Lightning 数据线
- 一台 Mac
- 一部备用 iPhone 11 Pro
需要先按照原版 usbliter8 项目的说明,将对应程序写入 Raspberry Pi Pico 2。
Lightning 数据线接线
剪开 Lightning 数据线后,按照下面的方式连接:
| 线材颜色 | 信号 | Pico 2 引脚 |
|---|---|---|
| 红色 | VBUS | VBUS |
| 黑色 | GND | GND |
| 白色 | D- | G13 |
| 绿色 | D+ | G12 |
接线前务必确认数据线内部线序。不同厂商的数据线可能使用不同配色,不能只依赖颜色判断。
二、下载固件并安装工具
本文使用的固件为:
iOS 27.0 Beta 2,适用于 iPhone 11 Pro
固件版本号:24A5370h
IPSW 下载地址:
从 Apple 服务器下载 iOS 27.0 Beta 2 IPSW
在 Mac 上安装所需的 Python 工具:
pip3 install requests pyimg4 pymobiledevice3
后续命令均在 work-27.0b2 目录中执行:
cd work-27.0b2
三、自定义固件包含的主要补丁
原始项目来自 wh1te4ever,其中已经包含大量针对自定义固件和 Ramdisk 的修改。
为了让 iOS 27.0 Beta 2 在目标设备上继续完成恢复和启动,本次又补充了几项修复。
| 组件 | 偏移 | 修改值 | 作用 |
|---|---|---|---|
kernel isDeviceInRestoreMode | 文件偏移 0x2894b68,VA 0xFFFFFFF009898B68 | 20 00 80 d2 c0 03 5f d6 | 绕过 USB Restricted Mode |
kernel sandbox file_check_mmap | 0x2f774e0 | 00 00 80 d2 c0 03 5f d6 | 允许执行 /var/jb 中的文件 |
kernel AMFIIsCDHashInTrustCache | 0x1f1ebe0 | mov x0,#1; ... | 调整信任缓存检查 |
DeviceTree ephemeral-storage | — | u32=1 | 解决恢复进度停在 99% 的问题 |
coreauthd | 0x95c0 | NOP | 避免 SEP 不可用导致服务崩溃 |
ctkd | 0x1b38、0x1b3c | mov x0,#0; ret | 避免 SEP 相关崩溃 |
mobileactivationd should_hactivate | 0x2ebb14 | 20 00 80 52 | 调整激活状态判断 |
mobileactivationd getActivationState | 0x327cb0、0x327d10、0x327d14、0x327d18 | NOP/ADRP/ADD/NOP | 将状态调整为 Activated |
针对沙盒挂载和文件操作,还修改了以下位置:
mount_check_mount 0x2f75640
remount 0x2f75474
umount 0x2f75110
vnode_check_rename 0x2f7019c
这些偏移仅适用于本文指定的固件和设备组合。即使是同一设备,只要系统版本或编译号不同,也不能保证偏移仍然有效。
四、进入 PWN DFU 模式
首先让 iPhone 进入标准 DFU 模式,然后将设备连接到前面准备好的 Pico 2 PWN DFU 工具。
触发过程中,可以通过 Pico 2 的指示灯判断状态:
- 指示灯闪烁两次:正在尝试利用;
- 指示灯保持常亮:利用成功;
- 指示灯熄灭:利用失败,需要重新进入 DFU 后再试。
成功后,将 iPhone 重新连接到 Mac。
在 macOS 中打开:
系统信息 → USB → Apple Mobile Device(DFU Mode)
如果设备信息中出现下面的标记,说明已经进入 PWN DFU 模式:
PWND:[usbliter8]
五、恢复自定义固件
确认设备处于 PWN DFU 模式后,进入工作目录:
cd work-27.0b2
生成自定义固件:
./make_cfw.py
这个过程需要管理员权限。根据终端提示输入 Mac 的登录密码即可。
制作完成后,启动 TSS 代理并执行恢复:
python3 tss_proxy_server.py
保留这个终端窗口,再打开一个新的终端窗口运行:
cd work-27.0b2
./restore_cfw.sh
恢复开始后,iPhone 屏幕上会出现进度条。等待脚本执行完毕,不要中途拔出数据线或关闭终端。
完成后,设备通常会重新进入恢复模式。
六、启动 SSH Ramdisk
设备回到恢复模式后,需要再次执行以下操作:
- 重新进入 DFU 模式;
- 再次连接 Pico 2;
- 确认进入 PWN DFU 模式;
- 将设备接回 Mac。
生成并启动 Ramdisk:
./get_rd.py
./boot_rd.sh
随后建立 USB 端口转发:
iproxy 2222 22
保留该窗口,再打开一个终端,通过 SSH 连接设备:
../tools/sshpass -p alpine ssh \
-o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null \
-p 2222 root@localhost
默认信息如下:
用户名:root
密码:alpine
端口:2222
进入设备后,以只读方式挂载对应的 APFS 分区:
/sbin/mount_apfs -o rdonly /dev/disk1s6 /mnt6
查找 SEP 固件文件:
find /mnt6 -name sep-firmware.img4
找到文件后,通过 scp 或 cat 将其传回 Mac,并命名为:
dev_sep.img4
回到 Mac,提取与设备相关的数据:
../tools/img4tool -e -m t8030_apticket.der dev_sep.img4
如果终端持续输出 SSHRD 启动日志,通常说明 Ramdisk 已经正常运行。
七、正常启动系统
Ramdisk 阶段完成后,准备正常启动所需文件:
./get_boot.py
然后执行:
./boot.py
如果补丁和设备数据匹配,iPhone 将开始正常启动。
进入系统后,可以使用 Dropbear 配合 iproxy 建立 SSH 连接。默认密码仍然是:
alpine
建议在环境稳定后立即修改默认密码。
接下来可以通过 SSH 安装 bootstrap 和 Sileo,也可以在 SSHRD 环境中提前完成相关文件部署。
八、通过 USB 恢复网络
由于 Wi-Fi 和基带功能已经损坏,设备无法像普通 iPhone 一样连接网络。
如果需要安装软件包,可以通过 USB 共享 Mac 的网络:
./net_up.sh
该脚本会自动配置 Mac 与 iPhone 之间的 USB 网络转发。
网络连通后,即可继续部署 bootstrap。正常情况下,完成部署并刷新应用注册信息后,Sileo 会出现在主屏幕上。
九、Sileo 没有显示怎么办
如果 bootstrap 已经安装,但主屏幕上没有出现 Sileo,可以重新进入 SSHRD 模式。
找到:
/var/jb/Applications/Sileo.app
然后将其移动到系统分区中的:
/Applications/
实际系统分区可能挂载在 /mnt1 或 /mnt2,请根据当前 APFS 挂载情况判断。
重新正常启动后,执行:
uicache
系统完成应用注册后,Sileo 应该会出现在主屏幕。
bootstrap 中的符号链接也需要正确修复,具体文件结构可以参考:
bootstrap_1900.tar.zst
十、主屏幕只剩三个应用的处理方法
如果启动后只能看到“设置”“电话”和“反馈”等少量应用,通常是系统应用仍停留在暂存目录中。
重新进入 SSHRD,并确认系统分区挂载位置后执行:
for a in /mnt2/staged_system_apps/*.app; do
b=${a##*/}
[ -e "/mnt1/Applications/$b" ] || cp -R "$a" /mnt1/Applications/
done
这段命令会检查暂存的系统应用,并将缺失的应用复制到系统的 /Applications 目录。
不同设备状态下,/mnt1 和 /mnt2 对应的分区可能不同。执行前应先确认挂载点,避免把文件复制到错误的卷。
完成后重新启动设备,并再次执行:
uicache
最终效果
完成自定义固件恢复、正常启动、bootstrap 部署和应用注册后,iPhone 11 Pro 即可运行修改后的 iOS 27.0 Beta 2 环境。

需要再次强调的是,这并不是一套适合日常使用的越狱方案。
在当前状态下,设备会失去多项核心功能,包括:
- 锁屏密码和部分 SEP 相关能力;
- Wi-Fi;
- 蜂窝网络和基带;
- 部分蓝牙功能;
- Apple 激活及在线服务;
- 正常系统更新和恢复能力。
它更适合作为一套 iOS 底层研究环境,用于分析启动链、自定义固件、内核补丁、Ramdisk 和系统安全机制。
不要在主力设备上尝试,也不要在没有完整备份的情况下操作。