diosra2’s blog

iOSのJailbreak、ダウングレード

ch3rryflower - 32-bit iOSデバイスをSHSHなしで紐付き・紐なしダウングレードするためのCFW作成ツール


32-bit iOSデバイスをSHSHなしで紐付き・紐なしダウングレードするためにCFW作成ツールを作成しました。使い方は下の方に書かれていますので見てください。

 

v1.2 iPhone 4のみです。checkm8が対応次第、他バージョンも対応させます。

 

対応環境: macOS 10.13 (それ以外は未確認)

 

使い方

*Untethered Downgrade (紐なしダウングレード) [for iOS 6/7]

iPhone 4で、iOS 6と7にダウングレードしたい場合

まず、iOS 7.1.2と、ダウングレードしたい目的のiOSのipswをch3rryflowerの中にダウンロードしてください。(この説明ではiOS 6.1.2を使用します。)

Firmware - The iPhone Wiki

 

ダウンロードできたら、ターミナルでch3rryflowerに移動します。

 

1, ブートローダーの作成

続いて、以下のコマンドをターミナルで実行します。

mkdir tmp

cd tmp

unzip -j ../iPhone3,1_6.1.2_10B146_Restore.ipsw Firmware/all_flash/all_flash*/iBoot*

unzip -j ../iPhone3,1_6.1.2_10B146_Restore.ipsw Firmware/dfu/iBEC*

※"iPhone3,1_6.1.2_10B146_Restore.ipsw"は、ダウングレードしたい目的のiOSのipswにあたります。

tmpフォルダ内に、"iBoot.n90ap.RELEASE.img3"と"iBEC.n90ap.RELEASE.dfu"が生成されました。

次にiBootを復号化したいので、iOS 6.1.2のiBootのkeyを調べます。The iPhone Wikiに乗っているのでそれを使用してください。

Firmware Keys - The iPhone Wiki

 

調べると、iOS 6.1.2では以下の通りになっていると思います。

IV = c939629e3473fdb67deae0c45582506d

Key = cbcd007712618cb6ab3be147f0317e22e7cceadb344e99ea1a076ef235c2c534

iBootを復号化するために、以下のコマンドをターミナルで実行します。

../bin/xpwntool iBoot.n90ap.RELEASE.img3 iBoot.n90ap.RELEASE.dec -iv c939629e3473fdb67deae0c45582506d -k cbcd007712618cb6ab3be147f0317e22e7cceadb344e99ea1a076ef235c2c534

iBoot.n90ap.RELEASE.decが生成されました。

 

*次が重要です!

このiBootは目的のiOSにSHSHなしでダウングレードするために重要です。

iBoot32Patcherを使用してiBootにダウングレード用のパッチをする必要があります。

このパッチを変更することで、起動時にverbose bootで起動したりすることが可能です。いくつか例を挙げておきます。どれか一つを実行してください。

*設定なし(基本)

../bin/iBoot32Patcher iBoot.n90ap.RELEASE.dec PwnediBoot --rsa --boot-partition

 

*verbose boot

../bin/iBoot32Patcher iBoot.n90ap.RELEASE.dec PwnediBoot --rsa --boot-partition -b "-v"

 

*verbose bootとcode signing enforcementの無効化

../bin/iBoot32Patcher iBoot.n90ap.RELEASE.dec PwnediBoot --rsa --debug --boot-partition -b "-v cs_enforcement_disable=1 amfi_get_out_of_my_way=1"

 

PwnediBootというファイルが生成されていればOKです。

最後に、以下のコマンドを実行します。

../bin/xpwntool PwnediBoot iBoot -t iBEC.n90ap.RELEASE.dfu

mv -v iBoot ..

cd ..

rm -r tmp

 

ch3rryflower内に"iBoot"というファイルが生成されていればOKです。

 

2, CFWの作成

cherryを使用して、CFWを作成します。

./cherry [in] [out] -derebusantiquis [base-ipsw] <bootloader>

[in]は、ダウングレードしたい目的のiOS (今回はiOS 6.1.2)のipsw

[out]は、作成したいCFWのファイル名

[base-ipsw]はiOS 7.1.2のipsw

<bootloader>は先ほど作成したiBootです。

 

つまり、今回の場合は以下のコマンドになります。

./cherry iPhone3,1_6.1.2_10B146_Restore.ipsw iPhone3,1_6.1.2_10B146_Custom.ipsw -derebusantiquis iPhone3,1_7.1.2_11D257_Restore.ipsw iBoot -memory

*Macの搭載メモリが8GB以下の場合は-memoryフラグは外してください。(約4GBのメモリを使用します。)

 

iPhone3,1_6.1.2_10B146_Custom.ipswがSHSHなしダウングレードで使用できるCFWです。

 

3, 復元

最初に、iPhone 4をDFU ModeでMacに接続しておいてください。

初回のみ、以下のコマンドからipwndfuをインストールする必要があります。

git clone https://github.com/axi0mX/ipwndfu

そして、以下のコマンドを実行し、デバイスをpwned DFU Modeにします。

cd ipwndfu

./ipwndfu -p

cd ..

 

*ここが重要です!

この手法では、簡単に言えばiOS 7.1.2のSHSHを使用して他のiOSを起動します。したがって、iOS 7.1.2のSHSHが必要です。

iOS 7.1.2はiPhone 4の最終バージョンなので、今でもSHSHは取得できます。

以下のコマンドで取得してください。

./idevicerestore -t iPhone3,1_7.1.2_11D257_Restore.ipsw

 

続いて、SHSHの名前を変更します。(このSHSHの名前は7.1.2となっていますが、ダウングレード対象はiOS 6.1.2のため。)

mv -v shsh/{ecid}-iPhone3,1-7.1.2.shsh shsh/{ecid}-iPhone3,1-6.1.2.shsh

*ecidはデバイスごとに違うので確認してください。

 

最後に、

./idevicerestore -e -w iPhone3,1_6.1.2_10B146_Custom.ipsw

を実行することで復元され、iOS 6.1.2が起動できるようになります。

 

*Untethered Downgrade (紐なしダウングレード) [for iOS 4.3]

iPhone 4で、iOS 4.3.xにダウングレードしたい場合

まず、iOS 7.1.2と、ダウングレードしたい目的のiOSのipswをch3rryflowerの中にダウンロードしてください。(この説明ではiOS 4.3.5を使用します。)

Firmware - The iPhone Wiki

 

ダウンロードできたら、ターミナルでch3rryflowerに移動します。

 

1, ブートローダーの作成

続いて、以下のコマンドをターミナルで実行します。

mkdir tmp

cd tmp

unzip -j ../iPhone3,1_4.3.5_8L1_Restore.ipsw Firmware/all_flash/all_flash*/iBoot*

unzip -j ../iPhone3,1_4.3.5_8L1_Restore.ipsw Firmware/dfu/iBEC*

※"iPhone3,1_4.3.5_8L1_Restore.ipsw"は、ダウングレードしたい目的のiOSのipswにあたります。

tmpフォルダ内に、"iBoot.n90ap.RELEASE.img3"と"iBEC.n90ap.RELEASE.dfu"が生成されました。

次にiBootを復号化したいので、iOS 4.3.5のiBootのkeyを調べます。The iPhone Wikiに乗っているのでそれを使用してください。

Firmware Keys - The iPhone Wiki

 

調べると、iOS 4.3.5では以下の通りになっていると思います。

IV = 986032eecd861c37ca2a86b6496a3c0d

Key = b4e300c54a9dd2e648ead50794e9bf2205a489c310a1c70a9fae687368229468

iBootを復号化するために、以下のコマンドをターミナルで実行します。

../bin/xpwntool iBoot.n90ap.RELEASE.img3 iBoot.n90ap.RELEASE.dec -iv 986032eecd861c37ca2a86b6496a3c0d -k b4e300c54a9dd2e648ead50794e9bf2205a489c310a1c70a9fae687368229468

iBoot.n90ap.RELEASE.decが生成されました。

 

*次が重要です!

このiBootは目的のiOSにSHSHなしでダウングレードするために重要です。

iBoot32Patcherを使用してiBootにダウングレード用のパッチをする必要があります。

このパッチを変更することで、起動時にverbose bootで起動したりすることが可能です。いくつか例を挙げておきます。どれか一つを実行してください。

iOS 4.3.3以下とiOS 4.3.4以降では使用するフラグが異なるので気をつけてください。

*設定なし(基本) (iOS 4.3.4 ~ 4.3.5の場合)

../bin/iBoot32Patcher iBoot.n90ap.RELEASE.dec PwnediBoot --rsa --logo4 --boot-partition

 

*verbose boot

../bin/iBoot32Patcher iBoot.n90ap.RELEASE.dec PwnediBoot --rsa --logo4 --boot-partition -b "-v"

 

*verbose bootとcode signing enforcementの無効化

../bin/iBoot32Patcher iBoot.n90ap.RELEASE.dec PwnediBoot --rsa --logo4 --debug --boot-partition -b "-v cs_enforcement_disable=1 amfi_get_out_of_my_way=1"

 

*設定なし(基本) (iOS 4.3.3以下の場合)

../bin/iBoot32Patcher iBoot.n90ap.RELEASE.dec PwnediBoot --rsa --logo4 --boot-partition --433  

*iOS 4.3.3以前にダウングレードする場合は、"--433"が必要です。

 

PwnediBootというファイルが生成されていればOKです。

最後に、以下のコマンドを実行します。

../bin/xpwntool PwnediBoot iBoot -t iBEC.n90ap.RELEASE.dfu

mv -v iBoot ..

cd ..

rm -r tmp

 

ch3rryflower内に"iBoot"というファイルが生成されていればOKです。

 

2, CFWの作成

cherryを使用して、CFWを作成します。

./cherry [in] [out] -derebusantiquis [base-ipsw] <bootloader>

[in]は、ダウングレードしたい目的のiOS (今回はiOS4.3.5)のipsw

[out]は、作成したいCFWのファイル名

[base-ipsw]はiOS 7.1.2のipsw

<bootloader>は先ほど作成したiBootです。

 

つまり、今回の場合は以下のコマンドになります。

./cherry iPhone3,1_4.3.5_8L1_Restore.ipsw iPhone3,1_4.3.5_8L1_Custom.ipsw -derebusantiquis iPhone3,1_7.1.2_11D257_Restore.ipsw iBoot -memory

*Macの搭載メモリが8GB以下の場合は-memoryフラグは外してください。(約4GBのメモリを使用します。)

 

iOS 4の場合はCFWを修正する必要があります。

iPhone 4をDFU ModeでMacに接続し、以下のコマンドを実行してください。

./ios4fix <iOS 4 ipsw [custom]> -t <iOS 4 ipsw [orig]> <iOS 7.1.2 ipsw>

 

今回の場合は、

./ios4fix iPhone3,1_4.3.5_8L1_Custom.ipsw -t iPhone3,1_4.3.5_8L1_Restore.ipsw iPhone3,1_7.1.2_11D257_Restore.ipsw

 

"iPhone3,1_4.3.5_8L1_Custom.ipsw"がSHSHなしダウングレードで使用できるCFWです。

 

3, 復元

最初に、iPhone 4をDFU ModeでMacに接続しておいてください。

初回のみ、以下のコマンドからipwndfuをインストールする必要があります。

git clone https://github.com/axi0mX/ipwndfu

そして、以下のコマンドを実行し、デバイスをpwned DFU Modeにします。

cd ipwndfu

./ipwndfu -p

cd ..

 

*ここが重要です!

この手法では、簡単に言えばiOS 7.1.2のSHSHを使用して他のiOSを起動します。したがって、iOS 7.1.2のSHSHが必要です。

iOS 7.1.2はiPhone 4の最終バージョンなので、今でもSHSHは取得できます。

以下のコマンドで取得してください。

./idevicerestore -t iPhone3,1_7.1.2_11D257_Restore.ipsw

 

続いて、SHSHの名前を変更します。(このSHSHの名前は7.1.2となっていますが、ダウングレード対象はiOS 4.3.5のため。)

mv -v shsh/{ecid}-iPhone3,1-7.1.2.shsh shsh/{ecid}-iPhone3,1-4.3.5.shsh

*ecidはデバイスごとに違うので確認してください。

 

最後に、

./idevicerestore -e -w iPhone3,1_4.3.5_8L1_Custom.ipsw

を実行することで復元され、iOS 4.3.5が起動できるようになります。


Copyright (C) 2017-2018 Diosra2. All Rights Reserved.