diosra2’s blog

iOS 脱獄、ダウングレード等

iPhone 4SやiPhone 5などのA5、A6デバイスをiOS 9にダウングレード・復元する

iOSではiPhoneOS 3.0からの認証システムにより、Appleの署名のないバージョンにダウングレードすることはできません。

特にiOS 5以降ではSHSH blobsを保存したとしても、それを利用することはできませんでした。

ですが、今回の方法では条件を満たすSHSH blobsを保存していた場合に限ってiOS 9にダウングレートや復元を行うことができます。

この方法はiOS 9のiBootのAPTicket検証時のバグによるものなので、Jailbreak(脱獄)等は不要です。

 

 

 

 

※注意

A6デバイスでiOS 10.3.x(10.3.3)に復元・インストール後にiOS 9以下のバージョンにダウングレードした際に、アクティベーションエラーを起こすため、使えなくなるという報告があります。(ただしiOS 10.3.3に再度復元すれば使える)

iOS 9を維持している場合は問題ないようなので、iOS 9以下を維持したい場合はこの方法を使い、iOS 9を維持するようにしましょう

 

*条件

復元したいバージョンのSHSH blobsを所持していること。

APTicketがNonce(APNonce)を含まないこと。(後述)

 

*対応デバイス

対応デバイスはすべてのA5(X), A6(X)デバイスのみとなります。

・iPhone 

iPhone 4S, iPhone 5, iPhone 5c

・iPad

iPad 2, iPad (3rd generation), iPad (4th generation), iPad mini

・iPod Touch

iPod Touch (5th generation)

 

0, 復元を始める前に

0-1, SHSHがNonceを含まないかどうかを確認する

iOS 5以降の復元では、復元時にSHSHの他にAPTicketという認証システムが存在し、ランダムに生成されたNonceとAPTicketが一致する場合のみ復元を許可するようになっています。そのため、iOS 5以降ではSHSHを保存していたとしてもそのまま使うことはできません。

 

しかし、iOS 9では復元時にiBootがNonceの検証をスキップするようです。そのため、正常なSHSH blobsが保存されていればAPTicketの検証を行わないままRestore Mode(復元モード)を起動することができ、復元することができます。

ただし、APTicketがNonceを含んでいる場合はこの方法では復元できません。

*例えば、SavethemblobsやTinyUmbrellaで取得したSHSHはNonceを持たないので使用可能です。

 

APTicketがNonceを含むかどうかは、axi0mX氏の"apticket-nonce-checker"で確認可能です。

以下の方法で確かめてみましょう。

 

使用方法

ターミナルから以下のコマンドを実行

(myblob.shshは確かめたいSHSHの名前です。)

User$ ./apticket-nonce-checker.py ticket.shsh

 

Nonceが含まれていなければ

User$ ./apticket-nonce-checker.py ticket.shsh

Parsing APTicket from SHSH file.

APTicket does not have a nonce.

と表示されます。

 

Nonceが含まれていれば

User$ ./apticket-nonce-checker.py ticket.shsh

APTicket has a nonce. Valid nonces are 20 bytes long.

Nonce (hex dump): 0000000000000000000000000000000000000000

Nonce length: 20 bytes

のように表示されます。

もしSHSHがNonceを含んでいる場合は、今回の方法ではダウングレード、復元はできません。

 

0-2, SHSHの種類を確認する

基本的にはSHSH保存ツールはEraseのSHSHを保存しています。

しかし、TinyUmbrella等でSHSHを取得した場合UpdateやOTAのSHSHも取得されます。今回使いたいのはEraseのSHSHなので、TinyUmbrellaで取得していた場合は気をつけて下さい。

以下の記事に目を通しておくと良いと思います。

 

 

0-3, デバイスからSHSHをdumpする(必要なら)

もし現在Jailbreak(脱獄)済みで、SHSHを保存し忘れている、またはしていなかった場合はSHSHをデバイスから取得しておきましょう。SHSHを抜き出しておけば、そのバージョンに戻ることも可能です。取れるものは取りましょう。

 

1, iOS 9.xに復元する下準備

いよいよ本題です。

ダウングレード・復元を行った場合、デバイスのデータは消去されるので必要な場合はバックアップを取っておきましょう。

 

1-1, 復元時の注意事項

現在のiOSバージョンによって少しやり方が変わるので注意が必要です。

1-1-1, 現在のバージョンがiOS 9の場合

iOS 9の場合、デバイスをリカバリーモードに入れることでそのまま任意のiOS 9.xへ復元できます。

(iOS 9のiBootには上記のバグが存在しているため。)

 

1-1-2, 現在のバージョンがiOS 9以外の場合

iOS 9以外にはこのバグは存在しません。

しかし、iOS 9のiBSSにはiBootと同じようにバグが存在するためiOS 9に復元することは可能です。

この場合、デバイスをDFU Modeに入れることで任意のiOS 9.xへ復元できます。

ただし、SHSHにiBSS blobが含まれている必要があるため、デバイスから抜きだしたSHSHは利用できません。

 

 

1-2, ipswとツールのダウンロード

ダウングレード・復元したいiOSのFWをダウンロードしておきます。

また、復元ツールである"iDeviceReRestore"もダウンロードしておいてください。

*リンク 

https://downgrade.party

 

1-3, ベースバンドについて

*iPod TouchとiPad Wi-Fi onlyモデルには関係ありません。

iPhone 4以降、ベースバンドはAppleが署名しているものにしか復元することができません。

iDeviceReRestoreでは自動的にベースバンドを最新のものに復元します。

*基本的にどのベースバンドでも通信は問題なくできるので気にしなくても大丈夫です。

ただし、iOSとBBのバージョンが一致しないことになるので、注意してください。

 

2, 復元する

iDeviceReRestoreを使って復元します。

iDeviceReRestoreではSHSHはlocalのものを確認し、なければ Cydia Serverに確認します。

なので手元にSHSHを用意するか、Cydia ServerにSubmitしておきます。

ここでは手元にSHSHを用意するということで進めます。

 

SHSHをshshフォルダの中にセットした後、デバイスをUSB接続して、現在のiOSバージョンに応じて適切なモードへいれます(1-1参照)。

SHSHの名前は、「ECID-Device-iOSVer.shsh」という形にします。

例えばiPhone 4SのECID: 1234567890123、iOS 9.0.2に復元する場合は『1234567890123-iPhone4,1-9.0.2.shsh』とリネームします。

 

出来たら、コマンドから

User$ ./idevicererestore -r downloaded.ipsw

(downloaded.ipswは任意のipswの名前)

と実行することで復元が開始されます。

 

特に問題が起きなければ復元は完了し、デバイスが起動します。

お疲れ様でした!