为苹果设备保存shsh2以便未来能够降级。
注意:
- 不是保存了shsh2就一定能降级的,目前A12(iPhone XR/Xs/11)及以上SoC的设备都不能够完美降级;
- 只能保存当前时点下能够签名的版本,保存时已不能签名的版本神仙来了也不行。
测试设备
PC端
操作系统:Windows 11 Pro 24H2,版本26100.4770
iTunes版本:12.13.7.1(非UWP)
Linux端
操作系统:Ubuntu 24.04 LTS
内核版本:6.8.0-79-generic
ideviceinfo版本:1.3.0-304-g54f6437
Apple设备
- iPhone 16,国行 256GB,iOS 18.6.2
- iPad Air 11-inch (M3),国行 256GB,iOS 26 RC
获得基带序列号
获得基带序列号需要编译libimobiledevice
工具。编译时需要严格按照本章顺序。如设备为iPod Touch、iPad非蜂窝版等无需基带的情况可不备份。
编译libplist
- 安装依赖
1
apt install -y build-essential checkinstall git autoconf automake libtool-bin doxygen
- 下载代码
1
git clone https://github.com/libimobiledevice/libplist.git && cd libplist
- 生成配置
1
./autogen.sh
- 编译安装
1
make -j8 && make install
编译libtatsu
- 安装依赖
1
apt install -y build-essential pkg-config checkinstall autoconf automake libtool-bin libcurl4-openssl-dev
- 下载代码
1
git clone https://github.com/libimobiledevice/libtatsu && cd libtatsu
- 配置目录
1
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
- 生成配置
1
./autogen.sh
- 编译安装
1
make -j8 && make install
编译libimobiledevice-glue
- 下载代码
1
git clone https://github.com/libimobiledevice/libimobiledevice-glue && cd libimobiledevice-glue
- 生成配置
1
./autogen.sh
- 编译安装
1
make -j8 && make install
编译libusbmuxd
- 下载代码
1
git clone https://github.com/libimobiledevice/libusbmuxd && cd libusbmuxd
- 生成配置
1
./autogen.sh
- 编译安装
1
make -j8 && make install
编译libimobiledevice
- 安装依赖
1
apt install -y libssl-dev
- 下载代码
1
git clone https://github.com/libimobiledevice/libimobiledevice.git && cd libimobiledevice
- 生成配置
1
./autogen.sh
- 编译安装
1
make -j8 && make install
下载shsh2
获得基带序列号
将设备用有线方式连接到刚才编译libimobiledevice
的设备,然后执行如下命令:
1 | ideviceinfo -k "BasebandSerialNumber" |
返回的值即为基带序列号。
获得设备ECID
打开iTunes,使用有线或无线方式将设备连接到电脑,然后双击两次序列号即可看到ECID。
获得设备BoardConfig
BoardConfig值所有同型号设备都是相同的,可以到The Apple Wiki查询。
也可以用上面的ideviceinfo工具,
1 | ideviceinfo -k "HardwareModel" |
返回值即为BoardConfig。
下载shsh2
到1Conan/tsschecker下载tsschecker,接下来就可以拼接为一个完整的命令获得shsh2了。
1 | ./tsschecker_linux_x86_64 --boardconfig d47ap -i 18.6.2 -e xxxxxxxxxxxxxxxx --bbsnum xxxxxxxx -s |
--boardconfig
填入主板代号,我这里国行iPhone16 256G就是d47ap
;-i
指定系统版本,指定的系统版本必须是当前时点可签的版本。可以使用-l
直接指定最新版;-e
指定ECID;--bbsnum
指定基带序列号;-s
保存到文件;-0
启用debug模式,可以看更详细的日志。
1 | root@ubuntu:~/tsschecker# ./tsschecker_linux_x86_64 --boardconfig d47ap -i 18.6.2 -e xxxxxxxxxxxxxx -s --bbsnum xxxxxxxx |