読者です 読者をやめる 読者になる 読者になる

diosra2’s blog

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

32bitのiOSの復元、ダウングレードまとめ[最新]

今までもOdysseusで好きなバージョンへ復元、ダウングレードができていた32bitデバイスですが、Re-Restore bugの発見でより安全に好きなバージョンへの復元、ダウングレードができるようになりました。

*前提条件

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

 

記事の不備、間違い等がある可能性があります。自己責任でお願いします。

###############################################################

バイスからSHSHをdumpする

Odysseusを利用します。

Odysseusリンク

http://dayt0n.com/articles/Odysseus/

*条件

Jailbreak済みである。task_for_pid0が有効である。

 

iOSバイスをkDFU Modeに入れ、コマンドから

-------------------------------------------------------------------------------------------

./irecovery -f PwnediBEC

./irecovery -s

iRecovery> /send ../payload

iRecovery> go blobs

iRecovery> /exit

./irecovery -g myblob.dump

./irecovery -s

iRecovery> reboot

 ./ticket myblob.dump myblob.plist [dumpしたバージョンのipsw] -z

./validate myblob.plist [dumpしたバージョンのipsw] -z

-------------------------------------------------------------------------------------------

validateでエラーが出なければmyblob.plistがAPTicket、LLB blobsの含むSHSHとして利用できます。

###############################################################

ベースバンドについて

ベースバンド(モデムファームウェア)は現在署名されているものにしか更新できません。

例えば2017/04/09現在、iPhone 5[iPhone5,2]なら

8.02.00 (iOS 8.4.1 OTA)

11.21.00 (iOS 10.2.1)

11.51.00 (iOS 10.3/iOS 10.3.1)

となります。

###############################################################

復元時の注意事項

1,復元したいバージョンのSHSH(9.x以外)のみがある

->Odysseusでのみ可能。JB必須、失敗/リンゴループ等になれば現在署名されているバージョンのみ復元可能。一発勝負

2,Re-restore bugが使えるSHSH(9.x)がある

->Re-restore bugが利用可能。つまり失敗したりリンゴループ等になっても9.xにならば復元可能。現在iOS 9.3.5/10.xとなっていても9.0-9.3.4のSHSHがあれば一度9.xへダウングレードしてOdysseusで6.xや7.xへ復元...なんてことも可能。

3,SHSHがない

->残念ながら署名されているバージョン以外の復元はできません。

###############################################################

1、現在のバージョン、復元したいバージョンが共にiOS 9.x

 Re-Restore bugによりJailbreak不要です。

*条件

Re-Restore bugが利用可能なAPTicket、LLB blobsの含まれるEraseのSHSHがある。(OTAはダメです。)

 

以下を利用します。

https://downgrade.party

[使用法]

SHSHをshshフォルダにセットした後、デバイスをRecovery Modeにしてコマンドから

./idevicererestore -r [ipsw]

 

また、futurerestoreでも可能です。

http://api.tihmstar.net/builds/futurerestore/futurerestore-latest.zip

コマンドからshsh blobsとipsw(とbaseband)を選択するだけで復元できます。

[使用法] 

バイスをRecovery Modeにして、コマンドから

./futurerestore -t [myblobs.shsh] —latest-baseband [ipsw]

最新のではないベースバンドを指定する場合[Appleが署名しているBB以外を選ばないでください。]、

./futurerestore -t [myblobs.shsh] -b [bbfw] -p [指定したBBを含むipswのBuildmanifest] [ipsw]

* SHSHがもしEraseではなくUpdateの場合、"-u"をつければアップテートとして復元可能です。

** iPod Touch 5GやiPad wifiモデル等basebandが不要なデバイスの場合

./futurerestore -t [myblobs.shsh] --no-baseband [ipsw]

2、現在のバージョンはiOS 9.x以外、復元したいバージョンがiOS 9.x

 

*条件

Re-Restore bugが利用可能なAPTicket、LLB blobs、iBSS blobsを含むEraseのSHSHがある。

OdysseusでdumpしたshshはiBSS blobsを含まないのでおそらく使えません。*未検証

1、現在のバージョン、復元したいバージョンが共にiOS 9.x

と同じように出来ますが、Recovery ModeではなくDFU Modeに入れてください。

 

3、復元したいバージョンがiOS X

Odysseusで復元します。

*条件

Jailbreak済みである。task_for_pid0が有効である。APTicket、LLB blobsの含まれるSHSHがある。(OTAのでも可) 

 

1)shshを利用可能な形式に変換します。

-------------------------------------------------------------------------------------------

zcat myblob.shsh > myblob.plist

plutil -convert xml1 myblob.plist

./validate myblob.plist [ipsw] -z

-------------------------------------------------------------------------------------------

validateでエラーが出なければmyblob.plistがSHSHとして利用できます。

2)custom ipswを作成

ベースバンドは今の所最新のにしても動くので、この方法ではベースバンドをAppleが署名するバージョンにアップデートします。

-------------------------------------------------------------------------------------------

./ipsw [復元したいバージョンのipsw] custom.ipsw -bbupdate

------------------------------------------------------------------------------------------- 

[basebandがないdevice]ex.iPad2,1

./ipsw downloaded.ipsw custom.ipsw

-------------------------------------------------------------------------------------------

iPad WifiモデルなどBBがないデバイスは4の手順は要りません。

3)PwnediBSSを抽出

-------------------------------------------------------------------------------------------

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

-------------------------------------------------------------------------------------------

4)BaseBand Firmware

custom.ipswをunzip

[例]*iPhone 5[iPhone5,1/5,2]でBB8.02.00に更新する場合

Firmware/Mav5-[BB_version].Release.bbfw
Firmware/Mav5-[BB_version].Release.plist

の2つを削除。代わりに

Firmware/Mav5-8.02.00.Release.bbfw

Firmware/Mav5-8.02.00.Release.plist

の2つをコピー。(8.4.1のbbfw)

 

8.02.00はOTA Updateで署名されているので

OTA FWリンク

https://www.theiphonewiki.com/wiki/OTA_Updates/iPhone/8.x

からOTAのFWをダウンロード、BuildManifest.plistをとりだします。

 

custom.ipsw内のBuildManifest.plist、OTAのBuildManifest.plistをそれぞれxcode等で開き、custom.ipsw内のBuildManifest.plistにたいして変更を加えます。

 

custom.ipsw内のBuildManifest.plist

-------------------------------------------------------------------------------------------

ーRoot

ーーBuildIdentities

ーーーItem0

ーーーーApBoardID

(途中省略)

ーーーーManifest

ーーーーーAppleLogo

ーーーーーBasebandFirmware

(途中省略)

ーーーーーiBoot

ーーーーUniqueBuildID

ーーーItem1

ーーーーApBoardID

(途中省略)

ーーーーManifest

ーーーーーAppleLogo

ーーーーーBasebandFirmware

(途中省略)

ーーーーーiBoot

ーーーーUniqueBuildID

ーーManifestVersion

(途中省略)

ーーSupportedProductTypes

-------------------------------------------------------------------------------------------

赤文字の部分(BasebandFirmwareUniqueBuildID)をOTAのBuildManifest.plistの内容に書き換えます。
書き換えたらzipして拡張子をipswに変更します。
これでCFW復元時にAppleからBB8.02.00の署名、ベースバンドの更新が可能になりました。
筆者はiPhone5 [iPhone5,2]において、BB 8.02.00がiOS 6.1.2/9.0/9.1/9.3.4で正常に動作することを確認しています。おそらく最新のBB(11.51.00)でも動きます。*未検証
 
4)デバイスをUSB 接続してkloaderでkDFU Modeにする
-------------------------------------------------------------------------------------------

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

-------------------------------------------------------------------------------------------
5)idevicerestoreで復元
-------------------------------------------------------------------------------------------

killall iTunesHelper

./idevicerestore -d -w custom.ipsw

-------------------------------------------------------------------------------------------