- 移动开发
【免费下载链接】applera1n
icloud bypass for ios 15-16
导读
本文围绕 palera1n/ramdisk 目录下内嵌的SSH Ramdisk 脚本展开,该脚本源自 SSHRD_Script 的精简版,可在 A7–A11 等 checkm8 漏洞设备上自动完成"制作 + 引导"一条龙:它从一个官方 IPSW 中下载、解密并打补丁 iBSS/iBEC/DeviceTree/kernelcache,构建带 SSH 服务的恢复模式 ramdisk,引导后你即可通过 SSH 登录设备、挂载文件系统并执行任意操作(如 palera1n 越狱首轮中的 blob 提取、fakefs 创建与内核补丁)。读完本文,你将掌握该脚本的完整使用流程、全部核心命令,以及sshrd.sh底层的实现原理与在 palera1n 主流程中的集成方式。
一、SSH Ramdisk 是什么
所谓 SSH ramdisk,是一种运行在恢复环境(ramdisk)中的特殊系统镜像。设备通过 DFU 模式引导由 iBoot、DeviceTree、kernelcache 和 ramdisk.dmg 拼装而成的自定义引导链后,并不会进入正常的 iOS 桌面,而是直接在设备上跑起一个带有SSH 服务的迷你系统。此时宿主机可以通过网络(经 USB 端口转发)登录设备,获得对文件系统的读写访问能力,从而完成 blob 备份、文件拷贝、根文件系统复制、内核替换等越狱/工具链操作。
在 palera1n/README.md 中明确指出:palera1n 首次运行时,会引导一个 ramdisk 来 dump 板载 blob、创建 fakefs(半 tethered 模式)、安装 loader 应用并给内核打补丁;而这个 ramdisk 正是 SSHRD_Script 的精简版。
二、前置条件
原文档列出的先决条件非常明确,结合脚本源码可以进一步细化:
- 一台 macOS 或 Linux 电脑。脚本通过
uname区分平台(sshrd.sh),Darwin 与 Linux 各有独立的工具链目录Darwin/与Linux/。 - 一台 checkm8 设备(A7–A11)。仓库内 shsh 目录 按 CPID 存放了
0x7000/0x7001/0x8000/0x8001/0x8003/0x8010/0x8011/0x8012/0x8015/0x8960等签名文件,覆盖了该区间芯片的签名需求。 - Python 3 与 pyimg4。脚本启动时会自动检测
pyimg4,未安装则提示按任意键后通过pip install pyimg4补装(sshrd.sh);后续 ramdisk 镜像的封装正是由python3 -m pyimg4完成的。 - 网络连接。首次运行需要从
static.palera.in下载gaster(checkm8 漏洞利用工具),并按$oscheck放置到平台目录(sshrd.sh)。
三、快速上手:完整使用步骤
原 README 给出了 7 步标准流程,以下完整保留并补充细节:
获取脚本。本仓库中脚本位于
palera1n/ramdisk/sshrd.sh。若单独使用,可克隆仓库后进入该目录:git clone https://gitcode.com/gh_mirrors/ap/applera1n && cd applera1n/palera1n/ramdisk如果你曾经克隆过旧版本,先
git pull拉取更新。创建 ramdisk,第一个参数为 ramdisk 对应的 iOS 版本号(不要带尖括号):
./sshrd.sh 15.6 # 或 16.x 设备:./sshrd.sh 16.0.3脚本会下载官方 IPSW 的相关组件并构建全套引导文件,产物输出到
sshramdisk/目录(iBSS.img4、iBEC.img4、ramdisk.img4、devicetree.img4、trustcache.img4、kernelcache.img4、bootlogo.img4)。将设备置于 DFU 模式。
- A11 用户注意:需要先进入 recovery 模式,再进 DFU(这是脚本中
irecovery -c go分支存在的原因,见下文"引导流程")。 - 脚本本身也会等待设备进入 DFU:macOS 用
system_profiler SPUSBDataType检测Apple Mobile Device (DFU Mode),Linux 用lsusb检测Apple, Inc. Mobile Device (DFU Mode)(sshrd.sh)。
- A11 用户注意:需要先进入 recovery 模式,再进 DFU(这是脚本中
引导 ramdisk:
./sshrd.sh boot注意:如果
sshramdisk/iBSS.img4不存在,脚本会提示"Please create an SSH ramdisk first!"并退出(sshrd.sh)。连接 SSH。原 README 提供的命令为
./sshrd.sh ssh(完整版 SSHRD_Script 中该命令用于建立 SSH 会话);从本仓库内嵌的精简版 sshrd.sh 源码看,boot之外并未保留独立的ssh分支,实际连接方式由上层 palera1n.sh 承担:先用iproxy 6413 22把设备的 22 端口转发到本机 6413,再以sshpass -p 'alpine' ssh -p6413 root@localhost登录(SSH 密码为alpine)。挂载文件系统:登录后在设备的 SSH 会话中运行:
mount_filesystems挂载结果:
/var挂载到 SSH 会话内的/mnt2;/private/preboot挂载到/mnt6。
在 palera1n 主流程中,还会使用不挂载用户数据分区的
mount_filesystems_nouser(palera1n.sh),此时 rootfs 出现在/mnt1,preboot 出现在/mnt6。开始操作。至此你已获得设备文件系统的完整访问能力,可以自由读写、拷贝文件。
四、核心命令清单
除标准流程外,原 README 还提供三条辅助命令:
| 命令 | 作用 | 说明 |
|---|---|---|
./sshrd.sh reset | 重置设备 | 在完整版 SSHRD_Script 中用于恢复设备状态 |
./sshrd.sh dump-blobs | 导出板载 blob | 提取设备上的 apticket,用于日后固件签名 |
./sshrd.sh clean | 删除旧 SSH ramdisk | 清理历史生成的引导文件,重新制作 |
结合仓库源码可以看到这些能力的实际落点:
- dump-blobs:在 palera1n.sh 中,引导 ramdisk 后通过
scp将设备/mnt6/$active/System/Library/Caches/apticket.der拉回宿主机,保存为blobs/<deviceid>-<version>.der。 - clean:对应 palera1n.sh 的
clean子命令,用于删除已创建的启动文件(palera1n.sh)。 - SSH 通道:
iproxy 6413 22(宿主机监听 6413,转发到设备 22)+sshpass -p 'alpine'的组合在 palera1n.sh 中被封装为remote_cmd/remote_cp两个函数,供整条越狱流程反复调用。
五、源码级实现剖析
sshrd.sh虽然只有约 200 行,却完整覆盖了"获取 → 解密 → 打补丁 → 封装 → 注入 → 引导"的全部环节。以下按执行顺序拆解。
5.1 环境自检与依赖准备
- 设置
set -e,任何一步失败即中止,并通过trap ERR_HANDLER EXIT在出错时清理work目录(sshrd.sh)。 - 检查
pyimg4(上文已述)。 - 若平台目录下没有
gaster,自动下载并解压gaster-<os>.zip,随后chmod +x <os>/*为全部工具赋执行权限(sshrd.sh)。
5.2 DFU 等待与设备识别
脚本会阻塞等待设备进入 DFU(检测方式见上文),随后通过irecovery -q读取三个关键值(sshrd.sh):
check=$("$oscheck"/irecovery -q | grep CPID | sed 's/CPID: //') # 芯片 ID,如 0x8010 replace=$("$oscheck"/irecovery -q | grep MODEL | sed 's/MODEL: //') # 设备型号,用于匹配 BuildManifest deviceid=$("$oscheck"/irecovery -q | grep PRODUCT | sed 's/PRODUCT: //') # 产品标识,如 iPhone9,3CPID决定了后续选用哪份shsh/<cpid>.shsh签名文件,MODEL/PRODUCT决定了从 IPSW 中选取哪些固件组件。
5.3 IPSW 获取与组件下载
- 根据
deviceid(含iPad/iPod时选用对应 OS 类型)和传入的 iOS 版本号,通过 appledb 的 JSON API 解析出当前设备的 IPSW 下载地址(sshrd.sh)。iOS 16 的 iPad 有一处特殊分支:固定使用20A5349b固件。 - 先用
gaster pwn触发 checkm8 漏洞,再用img4tool -e -s shsh/<cpid>.shsh -m work/IM4M从板载 blob 生成签名文件IM4M(sshrd.sh)。 - 在
work/目录下用pzb(partialZipBrowser)从 IPSW 中按需下载组件(sshrd.sh):BuildManifest.plist(固件清单,用于解析各组件路径);iBSS、iBEC(DFU 引导链);DeviceTree(设备树);- 与 RestoreRamDisk 配套的
*.trustcache; kernelcache.release(内核缓存);- 真正的
RestoreRamDisk(后续作为 SSH ramdisk 的基础镜像)。 - macOS 与 Linux 解析 BuildManifest 的方式不同:前者用
plutil,后者用 PlistBuddy。
5.4 解密、打补丁与 img4 封装
gaster decrypt解密 iBSS/iBEC(sshrd.sh)。iBoot64Patcher给 iBEC 注入引导参数(sshrd.sh):rd=md0 debug=0x2014e wdt=-1 serial=3其中
rd=md0指定从内存盘加载 ramdisk。对于0x8960/0x7000/0x7001这类更早的芯片,还会追加-restore参数。-n用于关闭某些安全检查。内核处理分三步(sshrd.sh):
img4提取原始内核为kcache.raw;Kernel64Patcher ... -a打补丁得到kcache.patched;kerneldiff计算两个内核的差异生成kc.bpatch,最终用img4 -T rkrn -P kc.bpatch把补丁以"补丁块"形式封装进kernelcache.img4(Linux 下额外加-J处理压缩格式)。
各组件以
-M work/IM4M关联板载签名,按不同 tag 封装成 img4(sshrd.sh):产物 tag 说明 iBSS.img4ibss第一阶段引导 iBEC.img4ibec第二阶段引导 devicetree.img4rdtr设备树 trustcache.img4rtsc信任缓存 kernelcache.img4rkrn打补丁后的内核
5.5 注入 SSH 环境到 ramdisk
这是"SSH ramdisk"的关键一步:
- 将解出的官方
RestoreRamDisk转成ramdisk.dmg(sshrd.sh)。 - macOS 下用
hdiutil先扩容到256MB再挂载到/tmp/SSHRD,随后用gtar把仓库自带的 other/ramdisk.tar.gz(内含 SSH 服务端、sshd 配置、mount_filesystems等工具)解包进去,最后卸载并收缩镜像(sshrd.sh)。 - Linux 下则用
hfsplus工具完成同等操作:grow 300000000扩容、untar other/ramdisk.tar注入内容(sshrd.sh)。源码中还保留了向 ramdisk 注入 Pogo loader 的注释代码,正式流程中已默认不执行。 - 最后用
pyimg4 im4p create -f rdsk与pyimg4 img4 create将注入后的ramdisk.dmg封装为sshramdisk/ramdisk.img4,并把 bootlogo.im4p 转成bootlogo.img4(tagrlgo,sshrd.sh)。
5.6 引导流程
./sshrd.sh boot分支按固定时序通过irecovery推送组件并执行命令(sshrd.sh):
gaster pwn+gaster reset:再次触发并复位漏洞状态;- 依次发送
iBSS.img4、iBEC.img4; - 对
0x8010/0x8015/0x8011/0x8012这些芯片,额外执行irecovery -c go让 iBEC 跳转执行(这就是 README 中"A11 用户先进 recovery 再 DFU"的技术原因); - 发送
bootlogo.img4并执行setpicture 0x1显示开机画面; - 依次发送并执行
ramdisk、devicetree、firmware(trustcache)、bootx(kernelcache),完成整个 ramdisk 引导。
六、在 palera1n 主流程中的集成
该 ramdisk 脚本并非孤立工具,而是 palera1n 越狱首轮的"地基"。以 palera1n.sh 为例:
cd ramdisk chmod +x sshrd.sh ./sshrd.sh `if [[ "$version" == *"16"* ]]; then echo "16.0.3"; else echo "15.6"; fi` ./sshrd.sh boot即 iOS 16 设备用16.0.3、iOS 15 设备用15.6作为 ramdisk 版本参数。引导完成后:
- 清理
~/.ssh/known_hosts中与 localhost 相关的旧记录,启动iproxy 6413 22端口转发,轮询直到 SSH 可连通(palera1n.sh); - 执行
mount_filesystems_nouser挂载文件系统,读取/mnt6/active定位 cryptex 激活 UUID,然后依次完成 blob dump(apticket.der)、fakefs 创建(newfs_apfs)、内核替换(kpf+Kernel64Patcher)、loader 与越狱文件拷贝等(palera1n.sh); - 首轮结束后的 tethered 引导也复用了 ramdisk 阶段的 SSH 通道(密码
alpine、端口 6413)。
也就是说:ramdisk 脚本产出的不仅是一个可 SSH 的恢复环境,更是 palera1n 后续全部写盘操作的执行载体。在 device 目录 的bypass.sh中也能看到同样的模式:iproxy 4444:44+sshpass -p 'alpine',先mount -o rw,union,update /再远程替换mobileactivationd实现 iCloud 绕过。
七、常见问题与注意事项
结合 COMMONISSUES.md 与脚本行为,实际使用中需留意:
- 必须先进 DFU 再执行创建/引导:脚本会一直等待 DFU 设备出现,若设备不在 DFU,命令会卡在等待状态。
- A11 设备请走"recovery → DFU"路线,否则引导到 iBEC 后无法用
go继续。 git stash冲突:若更新仓库时提示 "Your local changes would be overwritten by checkout",可在palera1n/ramdisk下依次执行git stash、git stash drop后重试(COMMONISSUES.md)。- SSH 凭据固定:连接密码为
alpine,登录用户root,目标端口 6413(经 iproxy 转发);连接参数中需关闭StrictHostKeyChecking。 - 挂载点含义:
/mnt2(即/var)、/mnt6(即/private/preboot)、/mnt1(rootfs)是脚本与上层约定的标准路径,编写自动化命令时不要改挂载点名称。 - 版本参数决定固件来源:传入的 iOS 版本号会通过 appledb API 反查 IPSW 地址,版本号需要能被查询到且与设备系统匹配;palera1n 目前对 iOS 16 固定使用
16.0.3。 - 数据安全:操作涉及对设备文件系统的直接读写,建议在测试设备上操作,并优先用
dump-blobs备份板载 blob。
总结
SSH Ramdisk 脚本是连接"checkm8 漏洞"与"设备文件系统"之间的桥梁:sshrd.sh用一条命令完成了 IPSW 组件下载、gaster 漏洞利用、iBSS/iBEC 补丁、内核补丁封装、SSH 环境注入与整链引导,最终交付一个可 SSH 登录、可挂载/var与/private/preboot的恢复环境。无论是独立使用(blob 备份、文件操作、系统修改),还是作为 palera1n 越狱的首轮载体,它都是理解 A7–A11 设备刷机/越狱工具链的最佳起点。更多实现细节可继续阅读 sshrd.sh、palera1n.sh 与 palera1n/README.md。
- 移动开发
【免费下载链接】applera1n
icloud bypass for ios 15-16
相关推荐
SSH Ramdisk 脚本常见问题解决方案
SSH Ramdisk 脚本常见问题解决方案 基础介绍 SSHRD_Script 是一个用于创建和引导 SSH ramdisk 的 Shell 脚本,适用于 c
Legacy iOS Kit项目:iPhone 5设备SSH Ramdisk启动失败问题分析
Legacy iOS Kit项目:iPhone 5设备SSH Ramdisk启动失败问题分析 在iOS设备越狱和降级领域,Legacy iOS Kit是一个广受
开发工具固件移动开发Legacy-iOS-Kit项目:iOS 10设备SSH Ramdisk操作风险与数据恢复方案
Legacy iOS Kit项目:iOS 10设备SSH Ramdisk操作风险与数据恢复方案 在iOS逆向工程领域,使用SSH Ramdisk技术进行设备数据
开发工具固件移动开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考