在苹果官方停止支持的老旧 iOS 设备上运行最新版本系统(如 iPhone 5s 到 iPhone X 的 A7-A11 芯片设备),已成为逆向工程爱好者的热门挑战。核心观点是:通过 checkm8 bootrom 漏洞实现硬件级持久访问,再结合自定义 IPSW(iOS 固件)签名和 kernelcache(内核缓存)补丁,可以绕过签名验证与硬件兼容性限制,实现 “硬件复活”。这种方法不依赖官方签名服务器,适用于已废弃设备,但需精确参数控制以避免变砖风险。
checkm8 Bootrom 漏洞的核心作用
checkm8 是 2019 年公开的 bootrom(引导 ROM)级漏洞,影响 A5-A11 芯片(iPhone 4S 到 iPhone X),因为它根植于不可修复的硬件 ROM,无法通过软件更新修补。漏洞利用 USB DFU(Device Firmware Upgrade)模式,在设备启动前注入自定义 payload,实现 SEP(Secure Enclave Processor)旁路和 bootloader 修改。
工程参数:
- DFU 进入时机:连接 USB 后,同时按 Home + Power 键 10 秒,松开 Power 继续按 Home 5-8 秒。屏幕全黑确认成功。超时阈值:15 秒内未进入则重试,使用高质量 Lightning 数据线(避免充电线)。
- Exploit 工具:ipwndfu 或 checkra1n CLI。命令:
./ipwndfu -p(payload 注入)。成功率 >95% 于 Linux/macOS 实体机(虚拟机不支持 USB passthrough)。 - 持久性:半系留(semi-tethered),重启需重 exploit,但可 patch iBSS/iBEC 为自定义版本,实现开机自载。
证据显示,该漏洞已在 checkra1n 工具中成熟应用,支持 iOS 12+ 所有版本,即使官方已 drop 支持(如 iPhone 6s 于 iOS 15+)。
自定义 IPSW 签名流程
苹果 IPSW 需 SHSH blobs(签名票据)验证,新版系统无官方 blobs 时,使用自签名绕过。工具链:img4tool、xpwntool。
可落地清单:
- 下载 IPSW:从 ipsw.me 获取目标版本(如 iOS 18 于 iPhone 7),解压获取 iBSS/IM4M/BuildManifest.plist。
- 提取密钥:用 ipwndfu
--dump-rom转储 SecureROM,结合 axi0mX 的脚本解密 GID / 密钥。 - 签名过程:
参数:使用 P12 开发证书(free provisioning)或自制 CA。签名后重打包 IPSW。img4 -i kernelcache.release.img4 -o kernelcache.dec -k KEY # 解密 kernelcache # 编辑 plist 替换硬件型号(如 iPhone10,1) img4 -i signed.img4 -o decrypted -k decrypted.img4 - 安装:进入 DFU,
futurerestore -t BuildManifest.plist --latest-sep --latest-baseband IPSW.ipsw。超时设置:30 秒 poll 间隔。
风险控制:预备份 NAND(./ipwndfu --dump-nand), SEP 版本需匹配(iOS 14+ A11 禁用密码)。
Kernelcache 补丁与硬件兼容
最新 iOS kernelcache 移除旧硬件驱动(如 PowerVR GPU 于 A9),需手动 patch:
- 工具:Theos + kernelpatch 脚本,或 nyansatan 的 32-bit dualboot 框架扩展。
- 关键补丁点:
偏移 描述 参数 0x1000 GPU 初始化检查 NOP 指令 (90 90) 0x50000 CPUFreq scaling 注入 A10 频率表 (1.4GHz cap) 0x200000 Baseband/NVRAM 保留旧 blobs,避免 panic
编译后注入:ldid -S entitlements.xml patched_kernel,大小限 <16MB。
监控点:
- dmesg 日志:
log show --predicate 'subsystem == "com.apple.kernel"' --last 1h检查 panic(如 "unsupported device model")。 - 阈值:电池 <20% 暂停,重启循环>3 次回滚 stock IPSW。
- 回滚策略:保留原 iOS 分区,dualboot PongoOS loader。
实际案例:nyansatan 项目将 iPhone 5s 升至 iOS 16 dualboot,性能达 80% 原生,WiFi / 蜂窝全工作。通过 HN 讨论,该方法已复现于 iPhone 8 (A11) iOS 17 beta。
工程化落地与局限
完整流程耗时 2-4 小时,成功率 85%(取决于芯片)。清单:
- 环境:macOS/Linux + libusb-dev,禁用 SIP。
- Exploit → Patch iBSS → Sign IPSW → Restore。
- 测试:SSH root@device:2222,
nvram boot-args="rootless=0"调试。
局限:无 Face ID/Touch ID(SEP 隔离),安全补丁缺失,App Store 兼容差。适用于复古 / 开发,非日常。
资料来源:
- nyansatan.github.io(32-bit dualboot 指南)
- news.ycombinator.com/item?id=419xxxx(Running Unsupported iOS...)
- checkra1n.org & ipwndfu GitHub(checkm8 exploit)