diosra2’s blog

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

iPhone 5のiOS 10.3.3 完全脱獄方法。

条件

iPhone5,2でiOS 7.0.4のSHSHがあること。(理論上はiOS 7のデバイス全て)

注意

通常のUntetherとは性質がかなり異なるので注意してください。
nvramをチェンジしているので、iOS 9未満に復元すると起動しません。その場合はiOS 9.xにre-restoreするかiOS 10.3.3に復元して脱獄し、変更したnvram変数を元に戻してください。

nvram変数を削除

User$ nvram -d boot-partition

User$ nvram -d boot-ramdisk


また、iOS 9以降のブートローダーではnvramのboot-partitionが削除されます。この場合起動できなくなるので、注意してください。今回のパッチではそれを無効にしてあります。
iOS 9以降のブートローダー(iBEC)を送信した段階でboot-partitionが削除されるので、iTunesなどで復元モードに入れてしまうと復元を中止しても起動しなくなります。

Thanks for

De Rebus Antiquis : @xerub
Odysseus : @daytonhasty, and more.
iBoot32Patcher : @iH8sn0w, @tihmstar, @nyan_satan
iboot-exploit-odysseus-bundles: Benfxmth
iBEC/kenrel patch : @JonathanSeals (@coolbooter)
Lots of tips : @ShadowLee19
And many developers !!

References

https://xerub.github.io/ios/iboot/2018/05/10/de-rebus-antiquis.html https://www.reddit.com/r/jailbreak/comments/96a1rn/tutorial_how_to_use_xerubs_ios_70x_iboot_exploit/
https://nyansatan.github.io/dualboot/


使用方法

準備するもの

N42_14G60_JB_alpha-1.zip
Odysseus
Bundle
iPhone5,2_7.0.4_11B554a_Restore.ipsw
iPhone5,2_9.0_13A344_Restore.ipsw
iPhone_4.0_32bit_10.3.3_14G60_Restore.ipsw

準備1_Untether作成

iboot exploit実行後、紐なしで起動するために以下のファイルを作成します。
10.3.3のファームウェアをunzipして、以下のファイルを取り出し、iBECのみパッチします。
DeviceTree
場所: Firmware/all_flash/DeviceTree.n42ap.img3
devicetree.img3にリネームしておいてください。後で使います。
iBEC
場所: Firmware/dfu/iBEC.iphone5.RELEASE.dfu
iBEC_patch

User$ ./xpwntool iBEC.iphone5.RELEASE.dfu iBEC.dec

User$ bspatch iBEC.dec iBEC.patched iBEC.iphone5.RELEASE.patch

User$ ./xpwntool iBEC.patched iBEC -t iBEC.iphone5.RELEASE.dfu

最後に作成された"iBEC"という名前のファイルがパッチ済みファイルです。後で使います。

準備2_CFW作成

9.0_FW
デフォルトのOdysseusのBundleを削除し、新たにダウンロードしたものに置き換えてください。
そして、9.0のBundle内のInfo.plistのRootFileSizeを2800程度に増やしておきます。

f:id:diosra2:20181010232249p:plain

OdysseusでiOS 9.0のCFWを作成します。

User$ ./ipsw iPhone5,2_9.0_13A344_Restore.ipsw iPhone5,2_9.0_13A344_Custom.zip -bbupdate -memory

作成できたら、unzipします。そして、以下のファイルをDowngradeフォルダ内に格納します。

f:id:diosra2:20181010232954p:plain
*applelogo, devicetree, kernelcacheは元々あるものをそのままにしておいてください。
*iBSS/iBECはFirmware/dfu内にあります。
Dowgrade内が画像のような構成になったら、このDowgradeフォルダ以外の9.0ファームウェアは不要なので削除していいです。

10.3.3_FW
10.3.3のファームウェアをunzipして、BuildManifsetに、N42_14G60_JB_alpha-1.zipに付属のパッチを当ててください。

User$ bspatch [BuldManifset.plist_orig] [BuldManifset.plist_patched] BuildManifset.patch

そして、先ほど作成したDowngradeフォルダを以下のように設置します。

f:id:diosra2:20181010234015p:plain
そして、Firmware/all_flash内に付属のmanifsetを設置します。
最後に、Firmware/all_flash内にiOS 7.0.4のiBootとLLBをそれぞれiBoot.iphone5.RELEASE.img3とLLB.iphone5.RELEASE.img3とリネームして置き換えてください。(applelogoを最初から表示したい場合は、applelogoもiOS 7.0.4のものに置き変えてください。)

f:id:diosra2:20181010234115p:plain
できたらzipして拡張子をipswに変更します。

復元2_idevicerestore

Odysseus内に7.0.4のshshを入れ、以下のようにリネームします。
[ECID(10進数)]-iPhone5,2-10.3.3.shsh
そして、デバイスをkloaderでPwnediBSSモードに突入させ、MacにUSB接続して以下のコマンドを入力することで復元が開始されます。

User$ ./idevicerestore -e -w [10.3.3_cfw.ipsw]


復元が終了すると、デバイスは再起動しないと思います。デバイスにはそのまま触れないでおいてください。
以下のコマンドを実行
iproxy 2222 22
別ウィンドウで以下のコマンドを実行しデバイスにSSH接続

User$ ssh -p 2222 root@127.0.0.1

以下、ssh接続したデバイスに以下のコマンドを実行
mount_hfs /dev/disk0s1s1 /mnt1
mount_hfs /dev/disk0s1s2 /mnt2

gptfdisk /dev/rdisk0s1
Command (? for help): i
Partition number (1-2): 2
(GUID、Last sectorを記録)

Command (? for help): d
Partition number (1-2): 2
Command (? for help): n
Partition number (1-2): 2
First sectorはそのままの値。
Last sectorは記録した元の値から256 sector減算した値。
Hex code or GUIDはそのまま[Enter key]
Command (? for help): c
Partition number (1-2): 2
Enter name: Data
Command (? for help): x
Expert command (? for help): a
Partition number (1-2): 2
48
49
Expert command (? for help): c
Partition number (1-2): 2
[記録したGUIDをコピペ]
[enter key]
Expert command (? for help): m

Command (? for help): x
Expert command (? for help): s
Enter new size (64 up, default 128): 4
Expert command (? for help): m
Command (? for help): n
Partition number (1-3): 3
First sector: [enter key]
Last sector: [一番最初に記録したLast sector]
[enter key]

Command (? for help): i
Partition number (1-2): 2
(First sector、Last sectorを新たに記録...後で使います。)
Command (? for help): w
Y

パーティション変更が保存して終了します。続けて以下のコマンドを入力します。
newfs_hfs /dev/disk0s1s3

続けて以下の計算をします。
[size_in_bytes] = 最後に記録した( Last sector - First sector - 1 )×4096

計算した数値を使用して以下のコマンドを実行
hfs_resize /mnt2 [size_in_bytes]

nvram変数を変更
nvram boot-partition=2
nvram boot-ramdisk="/a/b/c/d/e/f/g/h/i/j/k/l/m/disk.dmg"

そして、MacからscpコマンドでiOS側に以下のファイルを転送します。
"iBEC", "devicetree.img3", "ramdiskF2.dmg"

ramdiskF2.dmgはこちらです。
https://github.com/dora2-iOS/n42_untetherjb

コマンド(Mac側)

User$ scp -P 2222 [ramdiskF2.dmg] root@127.0.0.1:/mnt1

User$ scp -P 2222 [iBEC] root@127.0.0.1:/mnt1

User$ scp -P 2222 [devicetree.img3] root@127.0.0.1:/mnt1/usr/standalone/firmware


そして、iOSデバイス側でddコマンドを使用してramdiskを3rd partitionに書き込みます。
dd of=/dev/rdisk0s1s3 if=/mnt1/ramdiskF2.dmg bs=512k count=1

最後にreboot_bakをsshで実行すると、iOSが再起動します。

脱獄方法

準備1-kernelにパッチする

付属のpatchファイルを使用してkernelcacheにJailbreakパッチを当てます。10.3.3のファームウェアを解凍して、kernelcache.release.iphone5を取り出してください。

User$ ./xpwntool kernelcache.release.iphone5 kernelcache.release.iphone5.dec

User$ bspatch kernelcache.release.iphone5.dec kernelcache_patched kernelcache.release.iphone5.patch

User$ ./xpwntool kernelcache_patched kernelcache -t kernelcache.release.iphone5

生成された"kernelcache"が目的のものです。後で使います。

脱獄1-h3lixで仮脱獄

Cydiaのインストールとroot権限の取得を行うために、一度h3lixで仮脱獄します。
iPhone 5を起動し、通常通りにh3lixで脱獄してください。

脱獄2-ファームウェア書き換え

脱獄したら、kernelcacheをpatchしたものに置き換えます。
場所: /System/Library/Caches/com.apple.kernelcaches/kernelcache
元々あったものは削除orリネームし、patch済みkernelを、名前を"kernelcache"にして"/System/Library/Caches/com.apple.kernelcaches/"内に設置してください。

そして、付属のadd_firmwareのファームウェアを設置します。
1, /usr/libexec内の"CrashHousekeeping"を"CrashHousekeeping_"にリネーム
2, add_firmware内のすべてのファイルをiOSデバイスに転送します。
3, add_firmware内のすべてのファイルを所有権をroot:wheel(0:0)に、権限を0755にセットします。
4, add_firmware内のすべてのファイルを/usr/libexec内にぶち込みます。

最後に、fstabを書き換え、再起動時にrootfsがrwでマウントされるようにしておきます。
*注意: iOS 7以降では通常の環境で以下の書き換えを行うと起動しなくなるのでやらないように。今回はkernelにパッチしてあるので大丈夫です。
・old
/dev/disk0s1s1 / hfs ro 0 1
/dev/disk0s1s2 /private/var hfs rw,nosuid,nodev 0 2

これを以下のようにします。

・new
/dev/disk0s1s1 / hfs rw 0 1
/dev/disk0s1s2 /private/var hfs rw 0 2
また、/System/Library/LaunchDaemons/com.apple.backboardd.plistと/System/Library/LaunchDaemons/com.apple.SpringBoard.plistを/Library/LaunchDaemonsにコピーしてください。

最後にh3lixのアプリは不要なので消去し、再起動します。
起動し、脱獄状態なら成功です。

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