diosra2’s blog

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

A5、A6デバイスから現在のバージョンのSHSHを抜き出す

注意:この方法はJailbreak(脱獄)を必要とします。

以前からLimera1n Exploit (BootRom Exploit)の存在するA4デバイスではiFaith等でSHSHを抜き出すことは可能でしたが、A5(iPad 2, iPhone 4S)以降ではBootRom Exploitが修正されたためこの手法は使えませんでした。

しかし、@winocn 氏作成の"kloader"を使用することでiPhone 4SiPhone 5などのA5/A6デバイスから現在インストールしているiOSのSHSHをデバイスから抜き出すことができます。

 

 

事前に

これを行う前に、Jailbreak(脱獄)やSHSHとは何かを理解してから行ってください。特にJailbreak(脱獄)は自己責任で行ってください。(当ブログ記事はJailbreak(脱獄)行為について一切責任を負いません。)

 

条件

Jailbreak (脱獄) 済みである。

・task_for_pid 0 (tfp0) が有効である。

 

*以下のものでJB(脱獄)したならtfp0は有効です。(iOS 6.0未満は省略)

evasi0n

p0sixspwn

Pangu (iOS 7.1-7.1.x)

TaiG

Pangu9 (32bit)

Home Depot

 

対応デバイス

対応デバイスは以下の通りです。

iPhone 4SiPhone 5iPhone 5c

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

*Limera1n Exploitが存在するiPhone 4などでは、この手法を使う必要はありません。

 

1, 準備

Odysseusを使います。linux, Macの場合は下記からダウンロードしてください。

http://dayt0n.github.io/odysseus/odysseus-0.999.zip

 

2, SHSHを抜き出す下準備

OdysseusがダウンロードできたらPwnediBSS/PwnediBECを作成します。

OdysseusにはCFWを作成するためのFirmwareBundlesがあり、その際にPwnediBSS/PwnediBECも作成されるので、まずはCFWを作りましょう。

 

どのバージョンのiBSS/iBECを使っても問題ないので、FirmwareBundlesに存在するipswをダウンロードします。

ipswは下記リンク先で必要なものをダウンロードしてください。

https://ipsw.me

 

MacOSを想定しています。それ以外の環境の場合は違う部分を読み替えてください。

1, ダウンロードできたらOdysseusの中のmacosへ移動し、そこにipswを配置します。

 

2, ターミナルでOdysseusの中のmacosへ移動し下記コマンドを入力します。(downloaded.ipswはダウンロードしたipswのことです。)

User$ ./ipsw downloaded.ipsw custom.ipsw

 

3, CFWの作成が終わったらPwnediBSS/PwnediBECを抽出します。

User$ ./xpwntool `unzip -j custom.ipsw 'Firmware/dfu/iBSS*' | awk '/inflating/{print $2}'` pwnediBSS
User$ mv `unzip -j custom.ipsw 'Firmware/dfu/iBEC*' | awk '/inflating/{print $2}'` pwnediBEC

これでPwnediBSS/PwnediBECの作成は完了です。

 

3, SHSHを抜き出す

先ほど作成したPwnediBSSを使ってデバイスをkDFU(soft DFU) Modeにいれます。

ここではSSHを使った方法を紹介します。先にiOS側にOpenSSHをインストールしておきましょう。

 

1, kDFU Modeに入れます。

iOSバイスをUSB接続し、Macのターミナルから

User$ ./sshtool -k ../kloader -b pwnediBSS -p 22 deviceIP

(deviceIPはiDeviceのIPアドレスです。設定のWi-Fiから確認してください。)

と実行するとkloaderが実行され、デバイスがkDFU(soft DFU) Modeにはいります。

 

2, PwnediBECを送信します。

ターミナルから

User$ ./irecovery -f pwnediBEC

と実行するとPwnediBECが送信され、iOSバイスがRecovery Modeに入ります。

 

3,  SHSHをDumpします。

ターミナルから

User$ ./irecovery -s
iRecovery> /send ../payload
iRecovery> go blobs
iRecovery> /exit
User$ ./irecovery -g myblob.dump
User$ ./irecovery -s
iRecovery> reboot

myblob.dumpというファイルが生成されていれば成功ですが、このままでは利用することができません。

 

4, SHSHを有効化する 

1, iOSバイスの現バージョンのipswが必要なのでダウンロードしてください。

ipswは下記リンク先で必要なものをダウンロードしてください。

https://ipsw.me

 

2, 以下のコマンドを実行します。(matching.ipswとはダウンロードした現バージョンのipswのことです。)

User$ ./ticket myblob.dump myblob.plist matching.ipsw -z
User$ ./validate myblob.plist matching.ipsw -z

validateでエラーが出なければ成功です。myblob.plistが抜き出したSHSHとなるので、大切に保管しておきましょう。