但這件事在 A12 之後有所改變,不再只是單純拿個裝置的 ECID 去 1conan 網站讓他自動備份,因為 A12 的 Nonce Entangling 機制,只要你沒指定 nonce 備份的 SHSH2 基本上來說是沒用的,因為在你有生之年不可能運氣那麼好撞擊出對應 nonce 的降級可能
簡單來說 A11的降級 nonce =「隨機 generator」透過 SHA 算法計算出來
但 A12 的 nonce 則是 「隨機 generator」透過 SHA 算出後再加亂數 SALT,加上因為 SALT 算法只有你的 CPU 才會知道並且有可能每個 CPU 都不同
所以如果 A12 要備份,要直接備份固定的 nonce 的結果,不能像 A11 一樣備份隨便一個含 generator 的 SHSH 再透過程式去算出設定 nonce
——廢話分隔線——
大家好,我是 Gary,是個 iOS / 越獄 Tweak 開發者。對於新奇的 3C 和技術很有興趣熱忱,這次趁 iOS 13.5 還開放的這幾天整理一下 SHSH2 該怎麼備份~
本文詳細好讀版也會發表於個人網站
►►► 原文程式碼好讀圖多詳細版:https://garynil.tw/2020/06/10183/a12-shsh2-backup/
也歡迎追蹤個小小粉絲團 https://www.facebook.com/garynil.tw/ 看各種土砲實驗和教學
► 目的
在未來某天有支援你未來所在版本的 set nonce 工具推出後,這時你想平刷或降版、並且版本與 SEP 相容的情況下,你可以透過固定機器的 nonce 對應你的 SHSH2 並使用降級工具,再搭配保存對應版本的 shsh2 降級
舉個例子,假設目前你 iPhone 11 (A13) 在 13.5,有 Unc0ver 這個 set nonce 工具,你想降刷成 13.1,並且你有保存到你機器固定 generator 的 nonce 的 13.1 的 SHSH2,13.1 又與 13.5 SEP 相容
▼ 整個流程大概是這樣
► Requirements 準備
- 適用 A12 以上裝置,本篇測試於 iPhone 11 Pro Max 於 iOS 13.3~13.5,
照理來說通用 13.5 以下 SHSH2
- macOS 安裝 ideviceinfo(Windows / Linux 照理通用,原文有提供其他版本工具)
- 簽名越獄.app工具 Altstore 或開發者帳號
步驟1. 安裝工具 libimobiledevice
安裝 libimobiledevice 的目的是要使用底下 irecovery 這個工具去取得在 recovery mode 之下固定的 nonce開源:https://github.com/libimobiledevice/libirecovery
▼ macOS 可以簡單透過 homebrew 安裝
brew install libimobiledevice
但這部分在 macOS 10.14 後蠻容易遇到安裝問題的,可以參考原文解決方式:https://garynil.tw/2020/06/10183/a12-shsh2-backup/
步驟2. 確認 libimobiledevice 安裝正確順便拿取裝置需要的 ECID、UDID 資訊
▼ 拿取 ECID 指令(直接計算成 hex 格式)echo $(([##16]$(ideviceinfo -k UniqueChipID)))
▼ 拿取 UDID 指令
ideviceinfo | grep UniqueDeviceID
當然以上也可以透過 iMazing 等工具查詢
步驟3. 將裝置越獄並在過程中設置 generator
以目前 iOS 13.5 以下可全越獄並且 Unc0ver 支援 set nonce 的功能來說都可以直接透過 Unc0ver 使用▼ 過程大概就是利用 Altstore 等工具簽名 Unc0ver 裝入你的手機(教學:https://hiraku.tw/2019/11/5091/,我是用我自己開發者帳號簡單解決啦..),越獄基本上就會自動幫你 set nonce 成 0x1111111111111111 了
步驟4. 取得固定 generator 後的 nonce
▼ 將裝置踢進 recovery mode(用 iMazing 等其他工具或用按的也可)ideviceenterrecovery 你裝置的UDID
▼ 使用 irecovery 工具取得 nonce
irecovery -q | grep NONC
▼ 將裝置離開 recovery 模式
irecovery -n
▼ 註:如果因為要使用銀行等會偵測越獄的 app 又想取得 nonce 的人可以放心,我幫你們做了一些測試
越獄前
正常,偵測不到
越獄後
中信:偵測到已越獄
玉山:偵測到已越獄
越獄後再透過 Unc0ver rootfs 還原
APP 都還在,相片也都還在
Cydia APP icon 也還在,需要重置手機就會消失
中信:正常,偵測不到
玉山:偵測到已越獄(但其實是錯誤判斷 cache),所以解法是 rootfs 還原後重置整台手機或者還原成你越獄前的資料就正常了
步驟5.下載你取得 nonce 的對應 SHSH2
懶惰的話你可以使用 https://tsssaver.1conan.com/ 或 https://shsh.host/ 兩個服務備份下載▼ 但如果要自己備份的話先去下載工具:tsschecker(https://github.com/tihmstar/tsschecker/releases)
安裝完成後,cd 移動到工具所在資料夾並輸入指令為:
./tsschecker -d 你的裝置代號 -i 要保存還在簽署的iOS版本 -e 你的ECID --generator 0x1111111111111111 --apnonce 011880dfd35d25cacbbaf16a5054eb611be7d776bba610e7908f5c8c57057ccb -s
步驟6. 驗證 SHSH2 有效
一樣懶惰的話可以用線上服務測試:https://tsssaver.1conan.com/check/▼ 接下來使用 img4tool 搭配對應 ipsw 裡面的 BuildManifest.plist 去驗證你的 SHSH2 有效性(https://github.com/tihmstar/img4tool),指令為
img4tool --verify ./BuildManifest.plist -s ./xxx.shsh2
如果成功就會顯示 is GOOD!generator is bad 那行查過其他人經驗也遇到一樣,是正常