diosra2’s blog

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

Odysseusで使えるiPhone5,2 (iPhone 5 Global) 用のiOS 9.xのバンドルを作成しました。

Odysseusで使用できるiPhone5,2用のバンドルですが、iOS 9.0.1、9.1-9.3.5のものがなかったので作りました。

ついでにiPhone5,2 iOS 6.1.2のkernel patchも直しておきました。

以下からどうぞ。

iPhone 5でiOS 9.0 betaのデュアルブート。

重要: この記事の内容により生じた損害について、当ブログでは一切責任を取りません。自己責任でお願いします。

 

以下の記事の内容です。

iPhone 5でiOS 9.0 beta 1を脱獄して動かしてみた。 - diosra2’s blog

*デュアルブート先のiOSを脱獄する方法は含まれていません。

使用したもの

iPhone 5 iOS 9.0.2 [13A452] ...Pangu9でUntethered Jailbreak

Mac

 

使用したツール

iOS: dualbootstuff (by @nyan_satan), OpenSSH ...いずれもCydiaからインストール可能。

Mac: 0xED (Hex editor), Hopper Disassembler(v4), XPwn (xpwntool, dmg), iBoot32Patcher (by iH8sn0w)

 

1, 脱獄 [iOS/Mac]

省略します。

Untethered Jailbreakの方が便利かなと思います。iOS 9とiOS 6以下は相性が最悪なので、iOS 8.0-9.3.4を使うといいかなと思います。

 

2, デュアルブート用のiOSイメージの作成 [Mac]

・RootFS

iOS 9.3.5まではRootFS含めて全てが、iOS 10.0 beta 1まではRootFS以外が暗号化されています。

そのため、復号化が必要です。

"dmg"を使用してdecryptします。

User$ dmg [extract|build|build2048|res|iso|dmg] <in> <out> (-k <key>) (partition)

FW Keyはこちらです。

MonarchVailPrime 13A4254v (iPhone5,2) - The iPhone Wiki

 

User$ dmg extract 058-21658-023.dmg decrypt.dmg -k [Key]

User$ dmg build decrypt.dmg rootfs.dmg

rootfs.dmgが復号化されたRoot FileSystemとなります。

 

・iBSS

xpwntoolで復号化し、iBoot32Patcherでパッチします。

User$ xpwntool iBSS.n42.RELEASE.dfu iBSS.dec -k [Key] -iv [IV]

User$ iBoot32Patcher iBSS.dec PwnediBSS

 

multi_kloaderで利用できるように、さらにPwnediBSSをHex Editorで以下のように書き換えます。

0x0000099C: 00 BF 00 BF

0x00000A28: 00 00 D0 7F

 

・iBEC

xpwntoolで復号化し、iBoot32Patcherでパッチします。

User$ xpwntool iBEC.n42.RELEASE.dfu iBEC.dec -k [Key] -iv [IV]

User$ iBoot32Patcher iBEC.dec PwnediBEC -b "-v rd=disk0s1s3"

 

Hex Editorで以下のように書き換えます。

0x000012F8: 00 BF 00 68

0x000012FC: 00 BF 00 BF

0x00001304: 02 0F F8 D1

0x00038A3D: 00 66 73 62 6F 6F 74 00 (Text: upgrade -> fsboot)

0x00038BF2: 74 72 75 65 00 (Text: false -> true )

0x00038CBA: 30 (Text: 2 -> 0)

 

最後にIMG3ファイルを作成します。

User$ xpwntool iBEC.n42.RELEASE.dfu iBEC.img3 -k [Key] -iv [IV] -decrypt

User$ xpwntool PwnediBEC PwnediBEC.img3 -t iBEC.img3

 

・DeviceTree, KernelCache, Ramdisk

xpwntoolで復号化します

User$ xpwntool DeviceTree.n42ap.img3 DeviceTree.img3 -k [Key] -iv [IV] -decrypt

User$ xpwntool kernelcache.release.n42 kernelcache.img3 -k [Key] -iv [IV] -decrypt

User$ xpwntool 058-20975-024.dmg Ramdisk.img3 -k [Key] -iv [IV] -decrypt

 

3, パーティション

iOS 10.2.1デュアルブート時の記事を流用します。ほぼ同じです。

 

新しいOSをインストールするスペースを作ります。

危険(ここが一番文鎮化リスクが高い)なので注意。

壊れても自己責任でお願いします。

!!!!警告!!!! 

注意点を守らないとデバイスが何をやっても完全に復元不能(brick)な鉄クズになります

 

SSHでiOSデバイスに接続します。(OpenSSHをインストールしておいてください。)

dfコマンドで残り容量を確認します。

User:~ root# df -B1

Filesystem       1B-blocks       Used   Available Use% Mounted on

/dev/disk0s1s1  1255940096 1001906176   241475584  81% /

devfs                36352      36352           0 100% /dev

/dev/disk0s1s2 14682333184 1267920896 13414412288   8% /private/var

/dev/disk0s1s2を分割するので、hfs_resizeでサイズを縮小します。

新たに作成するiOS 9のパーティションの分(例えばiOS 9ならRootfs用に2.5GB程度+データ領域を足した値)を引いて、その引いた値を/dev/disk0s1s2の容量とします。

単位はByteです。(以下の数値は全てiOS 5の値なので注意してください。)

User:~ root# hfs_resize 10118860800 /private/var

変更されると以下のように容量が減っているのがわかります。

User:~ root# df -B1

Filesystem       1B-blocks       Used  Available Use% Mounted on

/dev/disk0s1s1  1255940096 1001906176  241475584  81% /

devfs                36352      36352          0 100% /dev

/dev/disk0s1s2 10118860800 1267920896 8850939904  13% /private/var

 

gptfdiskを使い、パーティションを分割します。

User:~ root# gptfdisk /dev/rdisk0s1

...

Command (? for help):

-> pを入力。このsector sizeを確認してください。この場合は4096。

Command (? for help): p

Disk /dev/rdisk0s1: 3891211 sectors, 14.8 GiB

Logical sector size: 4096 bytes

-> iを入力、そのあと2を入力。下の赤文字unique GUID部分を確認。

Command (? for help): i

Partition number (1-2): 2

Partition GUID code: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX (Apple HFS/HFS+)

Partition unique GUID: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE

First sector: 306632 (at 1.2 GiB)

Last sector: 3891188 (at 14.8 GiB)

Partition size: 3584556 sectors (13.7 GiB)

Attribute flags: 0003000000000000

Partition name: 'Data'

-> dを入力、続けて2を入力。

Command (? for help): d

Partition number (1-2): 2

-> nを入力、<enter>、Last sectorの値は、hfs_resizeで縮小したサイズ(この場合は10118860800)をsector size(この場合は4096)で割った値にFirst sector(306632)を足す。

10118860800/4096 + 306632 = 2777057

<enter>、<enter>。

Command (? for help): n

Using 2

First sector (306632-3891205, default = 306632) or {+-}size{KMGTP}: 

Last sector (306632-3891205, default =3891205) or {+-}size{KMGTP}: 2777057

Current type is 'Apple HFS/HFS+'

Hex code or GUID (L to show codes, Enter = AF00): 

Changed type of partition to 'Apple HFS/HFS+'

-> cを入力、続けて2、Data。

*cはパーティションの名前を設定します。第1パーティションは"System"となっていますが、この"System"を他のパーティションに設定しないでください。文鎮化して復元不能なります。

Command (? for help): c

Partition number (1-4): 2

Enter name: Data

-> Attribute flagsが"0003000000000000"なので

x、a、2、48、49、<enter>。

Command (? for help): x

 

Expert command (? for help): a

Partition number (1-2): 2

 

Toggle which attribute field (0-63, 64 or <Enter> to exit): 48

 

Toggle which attribute field (0-63, 64 or <Enter> to exit): 49

 

-> c、2、Enter the partition's new unique GUIDは最初にiコマンドで確認したunique GUID。この場合は、AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE。 

Expert command (? for help): c

Partition number (1-2): 2

Enter the partition's new unique GUID ('R' to randomize): AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE

->  新規パーテイションを追加します。

x、s、4、m

Command (? for help): x

 

Expert command (? for help): s

Current partition table size is 2.

Enter new size (32 up, default 128): 4

 

Expert command (? for help): m

-> n、3、<enter>、先ほどと同じく、今度は、[Rootfs(システムパーティション)のサイズ]/[sector size] + [First Sector size](この場合は2777058)。

<enter>、<enter>

Command (? for help): n

Partition number (1-4): 3

First sector (2777058-3891205, default = 2777058) or {+-}size{KMGTP}: 

Last sector (2777058-3891205, default =3891205) or {+-}size{KMGTP}:3104738

Current type is 'Apple HFS/HFS+'

Hex code or GUID (L to show codes, Enter = AF00): 

Changed type of partition to 'Apple HFS/HFS+'

-> n、4、<enter>、先ほどと同じく、今度は、[データパーティションのサイズ]/[sector size] + [First Sector size](この場合は3104740)。

<enter>、<enter>

Command (? for help): n

Partition number (1-4): 4

First sector (3104740-3891205, default = 3104740) or {+-}size{KMGTP}: 

Last sector (3104740-3891205, default =3891205) or {+-}size{KMGTP}:3891188

Current type is 'Apple HFS/HFS+'

Hex code or GUID (L to show codes, Enter = AF00): 

Changed type of partition to 'Apple HFS/HFS+'

-> 第4パーティション(新規作成のデータパーティション)のAttribute flagsを"0003000000000000"にセットします。

x、a、4、48、49、<enter>、m

Command (? for help): x

 

Expert command (? for help): a

Partition number (1-4): 4

 

Toggle which attribute field (0-63, 64 or <Enter> to exit): 48

 

Toggle which attribute field (0-63, 64 or <Enter> to exit): 49

 

Expert command (? for help): m

 ※pで正常に分割できているか確認。

wでセーブ。上書きされます。

Command (? for help): w

 syncコマンドを数回実行。(再起動しないでください!!!!)

User:~ root# sync; sync; sync;

 lsでパーティションが生成されたか確認します。

User:~ root# ls /dev/disk0s1*

/dev/disk0s1  /dev/disk0s1s1  /dev/disk0s1s2  /dev/disk0s1s3  /dev/disk0s1s4

 

newfs_hfsでディスクをフォーマットします。*bsizeはデバイスのブロックサイズです。(新しいデバイスはおそらく4096)

User:~ root# /sbin/newfs_hfs -s -v System -J -b bsize -n a=bsize,c=bsize,e=bsize /dev/disk0s1s3

User:~ root# /sbin/newfs_hfs -s -v Data -J -P -b bsize -n a=bsize,c=bsize,e=bsize /dev/disk0s1s4

 

これで作業は完了です。

 

4, iOS 9.0 betaを2番目の領域にインストール [iOS]

先ほど作成したRoot Filesystem(rootfs.dmg)を使用します。

AFC2, SSHなどなんでもいいのでMacからデバイスに転送してください。

以下のコマンドが復元コマンドです。([Rootfs]=rootfs.dmgの場所)

root# asr restore --source [Rootfs] --target /dev/disk0s1s3 --erase

途中(Erase contents of /dev/disk0s1s3 ()? [ny]:)と聞かれるので、 yを選択します。

Validating target...done

Validating source...done

Erase contents of /dev/disk0s1s3 ()? [ny]: y [← yを選択]

Retrieving scan information...done

Validating sizes...done

Restoring  ....10....20....30....40....50....60....70....80....90....100

Copied xxxxxxxxxx bytes in xx.yy seconds, xxxxx.yy KiB/s

Verifying  ....10....20....30....40....50....60....70....80....90....100

Verified SHA-1 checksum xxxxxxxxxx bytes in xx.yy seconds, xxxx.yy KiB/s

 

インストールが完了したらデュアルブート用にファームウェアを調整します。

root# mkdir /mnt1

root# mkdir /mnt2

root# mount_hfs /dev/disk0s1s3 /mnt1

root# mount_hfs /dev/disk0s1s4 /mnt2

root# mv -v /mnt1/private/var/* /mnt2

root# cp -a -v /usr/local /mnt1/usr

root# mkdir /mnt1/mnt2

root# ln -s /mnt2/keybags /mnt2/keybags

 

さらに、以下のファイルを書き換えます。

*私の手法ではKeyBagはメインシステムに対してsymbolic linkを貼って共有しています。

・/mnt1/etc/fstab

/dev/disk0s1s3 / hfs ro 0 1

/dev/disk0s1s4 /private/var hfs rw,nosuid,nodev 0 2

/dev/disk0s1s2 /mnt2 hfs rw 0 2

 

5, 起動 [iOS]

Root("/")に2で作成したファイルを設置します。

・PwnediBSS -> /iBSS

・PwnediBEC.img3 -> /iBEC

・DeviceTree.img3 -> /devicetree

・KernelCache.img3 -> /kernelcache

・Ramdisk.img3 -> /ramdisk

 

ターミナルやSSHで以下のコマンドを入力することで起動します。

root# multi_kloader /iBSS /iBEC >/dev/null

 

できました(´・ω・`)

f:id:diosra2:20180326110847j:plain

全デバイス対応!下駄なしでiPhoneやiPadのSIMロックを解除して運用する方法まとめ。

2018年7月22日現在、下駄なしでSIMロック解除を維持する手法が使用可能です。

というわけで、方法を一通りまとめてみます。

今回のアンロックは2012年のSAMの時とは違い、全キャリアのロックが解放されてるっぽいです。(検証不足ですが...)

docomo系MVNO SIMで解除した後、sb系MVNO プリペイドSIMを差し込んでみましたがアクティベーションは求められずにSIMを読みこめました。(sbのSIMは期限切れなので通信までは未確認ですが、SIMを正常に認識していたので多分大丈夫です。)

KDDI機の場合、脱獄している場合は先に普通にアクティベーションをしてアクティベーションレコードを取得後、DeactivateしてICCIDアンロックを行うことで、アクティベーションレコードの差し替えで一応両方使えるはずです…。多分…。(´・ω・`)

 

事前準備

完全に解除可能なICCID解除コードを探します。

ICCID

蜜柑: 7

西瓜: 13

林檎: 17

葡萄: 23

ボート: 113

鮭: 11493733

鰹: 43646149

鮪: 1131111112111

1, GPPLTEなどのICCID編集可能な下駄を持っている場合

対応デバイス

nanoSIMのiPhone、iPad全種

方法

解除したいSIMを下駄に乗せてデバイスに入れる。

ICCIDの編集を行っていない場合、おそらくSIMが無効と出るので緊急電話から*5005*7672*0#を入力し、発信。(iPhone only, iPadの場合は事前にiPhoneでセットする必要?)

Edit ICCIDから解除コードを入力。

コード入力後、再起動をする。

再起動後にアクティベートできれば、次回以降は下駄は不要でアンロックが維持されます。

 

2, 下駄がない場合 (要脱獄)

対応デバイス

32-bitデバイス (理論上は全デバイス)

方法

SAMを利用してICCIDを偽装してアクティベーションを通し、アンロックします。

一度解除コードでアクティベーションが通れば次回以降はSIMロックが解除された状態として利用できます。

*未テスト

iphone6,1/ios<8.0でsamを動かす

SAMをインストール

iphone5,2/ios 7.1.2のrootfsからlockdowndを取り出す

/var/mobile/SAMに配置、実行権限を付与する

/System/Library/LaunchDaemons/com.apple.mobile.lockdown.plistを/var/mobile/SAMにコピーする。

/var/mobile/SAM/com.apple.mobile.lockdown.plistを編集し、プロクラムのパスを/usr/libexec/lockdowndから/var/mobile/SAM/lockdowndに変更する。

(/System/Library/LaunchDaemons/com.apple.mobile.lockdown.plistは絶対にいじらないように。)

rootで以下のコマンド

launchctl unload /System/Library/LaunchDaemons/com.apple.mobile.lockdown.plist

launchctl load /var/mobile/SAM/com.apple.mobile.lockdown.plist

killall backboardd

 

 

3, おまけ --アンロックの永続化 (要脱獄)

某林檎に修正された場合でも、以下の方法でアクティベーションを保存しておくことで、初期化・復元後でも脱獄すれば書き戻してアンロックできる(はず...?)

未だにこの方法で初期の133で終わるICCIDで解除したデバイスのアンロックを維持できているので大丈夫かと思います。

方法

iOS 7未満は/var/root/Library/Lockdown/activation_records/activation_record.plist

iOS 8/9は/private/var/mobile/Library/mad/activation_records/activation_record.plist

iOS 10では/private/var/containers/Data/System/RANDOM_GUID_HERE/Library/activation_records/activation_record.plist

(探すヒント(rootで実行): find / -name "activation_record.plist")

にactivation_record.plistがあります。これを保存しておけば、対策されても脱獄さえしていれば、初期化後などでもactivation_record.plistを規定の位置に書き戻して、再起動実行でアンロックを維持できる(はず)なので、脱獄している場合は保存しておいて損はないかなと思います。

iPhone 5のSIMロックを下駄なしで解除してみた。

iPhone 5のSIMロックを解除してみました。

使用したのは脱獄だけです。おそらくAppleが修正を加えると使えなくなります。(アンロックしておけば維持はおそらく可能?)

原理はiOS 5時代のSAMに似てるかな?っといった感じです。

 

対応デバイス

A4デバイス以前 (iOS 3.0~7,1,2)

A5/A6デバイス (~iOS 7.1.2, iOS 8.0~)

iPhone 5だけでなく、iPhone 4SやiPhone 4、iPadなどでも使えます。特に、4Sなどのnano SIMではないデバイスは、下駄を使うのが難しいのでこの方法を使用する方が良いかと思います。

iOS 7.1.2まではSAMが動作しますが、8.0以降は未確認です。それでもアンロックはできます。

A7デバイス以降は、理論上はアンロックできますが、SAMが使えないのでこの方法は使用できません。下駄があれば解除できます。

3GSや4(BB: 01.59.00)の場合はultrasn0wで良いですが、それ以外の環境なら下駄を使うよりもこの方法のほうが良いかと思います。

また、解除後に使用したい回線がKDDI回線の場合、使えない可能性があるので注意してください。

 

1, 特定のICCIDを入手する。

ここで使えるコードが掲載されているみたいです。

ttps://parrotgeek.com/iccid/

元はGPPLTEなどで使われるICCIDバグコードです。

通常は常時下駄が必要ですが、今回のコードは下駄がなくても解除できるようです。

なので、一度ICCIDを偽装してアクチを通してしまえばいいのでは?と考え、SAMを使うことにしました。(筆者は下駄を持っていません...。)

下駄がある場合は、下駄さしてICCIDをセットした後にアクティベーションをかければ解除できます。

 

2, SAMにコードをセットする

Cydiaからインストールします。

repo: repo.bingner.com

 

ただし、SAMが古すぎるので、私の目的のiOS 9.0.2では動きませんでした。

そのため、一度iOS 6にダウングレードします。(shshがない場合はCoolBooterなどでも構いません)

*shshをダンプしてない場合はダウングレード前に実行しておきましょう。shshをデバイスからダンプしておけば、アンロック後にfuturerestoreで現在のバージョンに戻れます。

 

ダウングレードしたら脱獄、SAMをインストールします。

SAMStateがLoaded OKにならない場合、インストール後にrootでkillall lockdowndを実行してください。

まず、SAMを有効にします。

続いて、アンロックしたいSIMを入れます。

iPhoneがSIMを認識したらUtilitiesを開きます。

Deactivationをしてアクティベーションを解除します。

(iPhone 4以下でhacktivationを実行している場合はlockdowndの書き戻しが必要なので、revert lockdownd to stockを先に行ってください。)

次に、More Infomationに移動します。

Spoof Real SIM to SAMをタップします。SIM Detailsの情報がSAM Detailsのほうに移っていればOKです。

そして、SAM Details側のICCIDをアンロック用のICCIDに変更してください。

変更できたら、Utilitiesに戻って、Attempt Activationをタップしてください。アクティベーションされます。

*iOS 7の場合はiTunesに接続してください。

 

最後に、SAMを無効にしておしまいです。

KDDIでロックされているiPhone 5で、DocomoのSIMを読み込めました。

アンロックしたらアクティベーションレコードを保存しておきましょう。

iOS 7未満は/var/root/Library/Lockdown以下、

iOS 8/9は/private/var/mobile/Library/mad以下、

iOS 10では/private/var/containers/Data/System/RANDOM_GUID_HERE/Library以下

(探すヒント(rootで実行): find / -name "activation_record.plist")

にactivation_record.plistがあります。これを保存しておけば、対策されても脱獄さえしていれば(以下の方法などで)書き戻してアンロックを維持できるはずなので、下駄利用の方でも保存しておいて損はないかなと思います。

今回のアンロックは2012年のSAMの時とは違い、全キャリアのロックが解放されてるっぽいです。(検証不足ですが...)

docomo系MVNO SIMで解除した後、sb系MVNO プリペイドSIMを差し込んでみましたがアクティベーションは求められずにSIMを読みこめました。(sbのSIMは期限切れなので通信までは未確認ですが、SIMを正常に認識していたので多分大丈夫です。)

 

3, アクティベーションレコードを書き戻す (番外編)

iOS 9.0.2など、SAMが使用できないバージョンでアンロックしたい場合は少し複雑です。

まず、上記の方法でアクティベーションチケットを保存しておきます。

今回は、これを書き戻すことでアンロックできます。

保存したら、futurerestoreなどでiOS 9.0.2にアップデート、脱獄します。(このときは、通常のロックされているキャリアでアクティベートしてください。)

 

脱獄後、/private/var/mobile/Library/mad/activation_recordsに、先ほどバックアップした、アンロック済みのactivation_record.plistを上書きします。

最後に再起動します。すると、再起動後からアンロックが適用されます。

 

iPhone 3GSを簡単にiPhoneOS 3.0にダウングレードする!

以前、以下の記事で3GSをSHSHなしで3.0にダウングレードする方法を紹介しました。

【Tutorial】 iPhone 3GSをiPhoneOS 3.0にSHSHなしでダウングレードする。 - diosra2’s blog

 

しかし、こちらですと手順も複雑で分かりにくいので、Firmware bundleを作成して簡単にダウングレードできるようにしました。

SHSHは不要です。

 

使用する脆弱性

0x24000 Segment Overflow (以下24kpwn) --Old Bootrom (旧ブートロム) のデバイスをSHSHなしで起動させるため。

alloc8 exploit --New Bootrom (新ブートロム) のデバイスをSHSHなしで起動させるため。

limera1n exploit --CFWで復元するため。

 

*必要なもの

iPhone2,1_3.0_7A341_Restore.ipsw  (ファイルサイズ: 300MB程度)

iPhone2,1_3.0_7A341.bundle.tar.lzma

Odysseus

ipwndfu

 上記の必要なものを全てダウンロードしてください。

 

また、以下の記事から自分のデバイスがiPhoneOS 3.xに復元できるかどうか、あらかじめ確認してください。

iPhone 3GSのあれこれ。 - diosra2’s blog

 

1, 3.0のFirmware bundleをOdysseusに導入する

3.0のバンドルをダウンロード、解凍してください。

そして、出てきたbundleをOdysseusの"FirmwareBundles"ディレクトリに導入してください。

 

2, CFWを作成する

OdysseusでCFWを作成します。

Terminalで以下のコマンドを実行、CFWを作成してください。

User$ ./ipsw iPhone2,1_3.0_7A341_Restore.ipsw iPhone2,1_3.0_7A341_Custom.ipsw

 

3, デバイスをPwned DFU Modeにする

ipwndfuを使用します。

デバイスをDFU Modeに入れ、Terminalで以下のコマンドを実行します。

User$ ./ipwndfu -p

以下のようになれば成功です。

User$ ./ipwndfu -p

*** based on limera1n exploit (heap overflow) by geohot ***

Found: CPID:8920 CPRV:14 CPFM:03 SCEP:01 BDID:00 ECID:XXXXXXXXXXXXXXXX SRTG:[iBoot-359.3]

Device is now in pwned DFU Mode.

 

4, 復元する

Odysseus内にあるidevicerestoreで復元します。

今回の手法はSHSH不要ですが、空のSHSHファイル(plistファイル)を用意する必要があります。続いて、そのshshファイルを以下のようにリネームしてOdysseus内の"shsh"ディレクトリに入れてください。

[ECID]-iPhone2,1-3.0.shsh

(中身)

*[ECID]は、デバイスのECIDを10進数で入れてください。

 

いよいよ復元です。Terminalで以下のコマンドを実行してください。

User$ ./idevicerestore -e -w iPhone2,1_3.0_7A341_Custom.ipsw

※iOS>3.0.1から3.0に復元した場合、1度目の復元後は起動時に必ずエラーを吐きます。(ほとんどの場合はこれに当てはまると思います。)

そのため、この場合は3~4の手順をもう一度繰り返してください。

 

このバンドルではLLBに24kpwnを適用させているので、Old Bootrom (旧ブートロム) の場合は復元が終わると正常に起動します。作業はこれでおしまいです。お疲れさまでした!

New Bootrom (新ブートロム) の場合、復元が終わるとデバイスはDFU Modeで停止します。New Bootromでは24kpwnは修正されているので、起動しなくても正常です。次のステップに進みます。

 

5, ipwndfuでalloc8 exploitを適用してiPhoneOSを起動する (New Bootrom only)

New Bootromでは24kpwnは修正されているため、このままでは起動しません。

そのため、ipwndfuでalloc8 exploitを適用します。

5-1, limra1n exploitでPwned DFU Modeにする (New Bootrom only)

デバイスをDFU Modeに入れ、Terminalで以下のコマンドを実行します。

User$ ./ipwndfu -p

以下のようになれば成功です。 

User$ ./ipwndfu -p

*** based on limera1n exploit (heap overflow) by geohot ***

Found: CPID:8920 CPRV:14 CPFM:03 SCEP:01 BDID:00 ECID:XXXXXXXXXXXXXXXX SRTG:[iBoot-359.3]

Device is now in pwned DFU Mode.

 

5-2, alloc8 exploitの適用 (New Bootrom only)

Terminalで以下のコマンドを実行し、alloc8 exploitを適用します。

User$ ./ipwndfu -x

 

以下のように表示されたあと、デバイスが起動すれば成功です。

Installing alloc8 exploit to NOR.

Dumping NOR, part 1/8.

Dumping NOR, part 2/8.

Dumping NOR, part 3/8.

Dumping NOR, part 4/8.

Dumping NOR, part 5/8.

Dumping NOR, part 6/8.

Dumping NOR, part 7/8.

Dumping NOR, part 8/8.

NOR backed up to file: nor-backups/nor-XXXXXXXXXXXXXXXX-XXXXXXXX-XXXXXX.dump

Preparing modified NOR with alloc8 exploit.

Sending iBSS.

Waiting for iBSS to enter Recovery Mode.

Sending iBSS payload to flash NOR.

Sending run command.

If screen is not red, NOR was flashed successfully and device will reboot.

 

作業はこれでおしまいです。お疲れさまでした!

Electra1131で脱獄後はブートループ時の対策をしておこう。

Electra1131で脱獄できるようになりましたね。

しかし、iOS 11.3.1はもう署名されていないため、ブートループになってしまうと11.4行きになってしまいますね。

そこで、あらかじめNonceをSetしておくことで、ブートループに陥ってもfuturerestoreすることができるようになります。

 

使い方

Electra1131を開き、Set Nonceをタップします。

デフォルトでは0xbd34a880be0b53f3がセットされています。

ApNonceはA7-A9デバイスでは603be133ff0bdfa0f83f21e74191cf6770ea43bb

A10-デバイスでは15400076bc4c35a7c8caefdcae5bda69c140a11bce870548f0862aac28c194ccとなっています。

もし、そのApNonceを含むshsh2を所有していない場合、自分のshsh2のgeneratorの値と入力しておきましょう。

以下の場合は0x0123456789abcdefです。

これで、脱獄時に毎回Nonceがセットされるようになります。

もし、ブートループに陥った際はデバイスをリカバリーモードに入れ、以下の手順でfuturerestoreをすることでiOS 11.3.1に戻ることができます。

ただし、A11デバイスは不具合を抱えることになるので注意してください。

iOS 11.2-11.3.1を脱獄するElectra1131がリリース。注意点など。

本日、iOS 11.2-11.3.1を脱獄するElectra1131かリリースされました。

https://www.coolstar.org/electra

 

いつも通り、仮脱獄です。

今回のツールは、それぞれ別のexploitを使用したツールが2種類リリースされていますが、どちらを使っても結果は同じです。

ただし、multipath tcp exploitを使用するには開発者アカウントが必要になります。こちらの方が脱獄時の安定度は高いようです。

対して、vfs exploit (empty_list)を使用したものは誰でも利用出来るものとなっています。Cydia Impactorから通常通りにインストールすることができます。

ただし、こちらは脱獄時の安定度が低く、失敗しやすいです。ただ、一度成功してしまえば使用感は同じとなります。

 

私もvfs exploitを使用したものを試してみましたが、iPhone 5sなどの古いデバイスでは失敗に失敗を重ね、最終的には脱獄するだけで3時間程度かかりました。正直に言わせてもらうと低スペックデバイスでの使用感はゴミです。A7デバイスはElectra(11.0-11.1.2)の人は現状維持、11.3.1の人は10.2-10.3.3にダウングレードしたほうが幸せになれる気がします...。

 

一方、iPhone 6sでも試してみましたが、こちらではすんなり成功する印象(vfs)。まだ一度も失敗してないです。デバイスごとにこんなに違うのか...といった感じですね。

 

 

iOS 11.3 beta 5とbeta 6の署名が終了。脱獄できる可能性のあるバージョンへの復元は不可に。

なぜかAppleから署名されていた、iOS 11.3 beta 5/6への署名が停止しました。

 

よって、復元できるバージョンはIan beer氏のexploitが修正されたバージョンのみとなり、iOS 11.4から11.3.1へ戻ることはできなくなりました。

 

現在以降、futurerestoreで復元失敗するとiOS 11.4行きなので、11.3.1へfuturerestoreを考えている方は気をつけて下さい。

iOS 11.3.1にfuturerestoreする。

もうそろそろ、iOS 11.3.1で脱獄できそうなので、他のバージョンからiOS 11.3.1にする方法をおさらいしておきましょう。

Windowsでも行えます。ただし、この記事の説明はMacをベースとしているので注意してください。

 

ただ、iOS 9.1以下の環境の場合は完全脱獄を失うことになるので非常にもったいないです。

完全脱獄は絶望的なので、この場合はもう一台デバイスを買ったほうがいいです。

*当サイトでは、いかなる場合でもユーザ側に復元失敗などの不利益が生じた場合の補償は一切しません。自己責任の元、手順通りに行ってください。

 

条件

脱獄してApNonceをセットできること。

shsh2を保有していること。

(もしくは特殊条件を満たしていること) 

 

futurerestoreする準備

futurerestoreを利用するためにはiOS上でNonceをnvramにセットする必要があります。

バージョンごとに異なりますので注意してください。

 

iOS 7.0 ~ 8.4.1、9.1

まず、rootでnonceEnablerをターミナルで実行、nvpatchを適用させます。

そのあと以下のコマンドを入力し、ApNonceをセットします。

generatorの値[NONCE]はshsh2をxcodeなどで開いて確認してください。この場合は「0x0123456789abcdef」です。

f:id:diosra2:20180614233216p:plain

root# nvram com.apple.System.boot-nonce=[NONCE]

nvram -pで確認できるので、入力した値が正確に出ているかを確認してください。

 

iOS 9.0 ~ 9.0.2

このバージョンの脱獄はtfp0 patchが適用されていません。

そのため、cl0verを利用して最初にtfp0 patchを当ててください。

tfp0 patchを当てたら、rootでnonceEnablerをターミナルで実行、nvpatchを適用させます。

そのあと以下のコマンドを入力し、ApNonceをセットします。

generatorの値[NONCE]はshsh2をxcodeなどで開いて確認してください。この場合は「0x0123456789abcdef」です。

f:id:diosra2:20180614233216p:plain

root# nvram com.apple.System.boot-nonce=[NONCE]

nvram -pで確認できるので、入力した値が正確に出ているかを確認してください。

 

iOS 9.2 ~ 9.3.3

このバージョンではtfp0 patchが含まれていませんが、@qwertyoruiopz氏のJailbreakMeで再脱獄することでhgsp4からnvpatchを当てることができます。

JailbreakMeで再脱獄したら、rootでnonceEnablerをターミナルで実行、nvpatchを適用させます。

そのあと以下のコマンドを入力し、ApNonceをセットします。

generatorの値[NONCE]はshsh2をxcodeなどで開いて確認してください。この場合は「0x0123456789abcdef」です。

f:id:diosra2:20180614233216p:plain

root# nvram com.apple.System.boot-nonce=[NONCE]

nvram -pで確認できるので、入力した値が正確に出ているかを確認してください。

 

iOS 9.3.4 ~ 9.3.5

このバージョンでは脱獄できません。

しかし、PhoenixNonceを利用することでNonceのセットであれば行うことができます。

PhoenixNonceからipaをダウンロード、Cydia Impactorでインストールします。

アプリがインストールされたら開きます。

このような画面になるので、shsh2のgeneratorの値を入力してSetをタップします。以下の場合は「0x0123456789abcdef」と入力します。

f:id:diosra2:20180614233216p:plain

 

iOS 10

iOS 10ではyalu102 (iOS 10.0 ~ 10.2)、doubleh3lix (iOS 10.x)で脱獄するのが基本ですね。

この場合、すでにnvpatchは適用済みなのでNonceをセットするだけで良いです。

generatorの値[NONCE]はshsh2をxcodeなどで開いて確認してください。この場合は「0x0123456789abcdef」です。

f:id:diosra2:20180614233216p:plain

root# nvram com.apple.System.boot-nonce=[NONCE]

nvram -pで確認できるので、入力した値が正確に出ているかを確認してください。

 

iOS 11

iOS 11ではnoncereboot1131が使用できます。

http://pwn20wnd.science/noncereboot1131UI/noncereboot1131UI.ipa

また、iOS 11.2-11.3.1ではElectra1131を利用してNonceをSetすることができます。

(iOS 11.0-11.1.2では脱獄ツールにElectraがありますが、利用してないのでわかりません...。)

noncereboot1131

Enter your generatorにshsh2のgeneratorの値を入力します。

f:id:diosra2:20180614233216p:plain

この場合は「0x0123456789abcdef」です。

 

*empty_list自体が不安定なので、かなり失敗しがちです。起動から1~2分経過し、デバイスがある程度落ち着いてから行うと少し成功率が上がります。

Electra1131

Electra1131を開き、Set Nonceをタップします。

デフォルトでは0xbd34a880be0b53f3がセットされています。

ApNonceはA7-A9デバイスでは

「603be133ff0bdfa0f83f21e74191cf6770ea43bb」

A10-A11デバイスでは

「15400076bc4c35a7c8caefdcae5bda69c140a11bce870548f0862aac28c194cc」

となっています。

もし、そのApNonceを含むshsh2を所有していない場合、自分のshsh2のgeneratorの値と入力しておきましょう。

以下の場合は0x0123456789abcdefです。

まだ脱獄していない場合は脱獄することでこのNonceがセットされます。

また、脱獄済みの場合はこの時点でNonceがセットされています。

入力したNonceは再脱獄時に自動で毎回セットされるので、ブートループ時の復元対策にもなります。

 

futurerestoreする

*futurerestoreはiOS 11.xに復元する場合、tihmstar氏のものではなく、encounter氏のものを使用してください。

 

必要な物

futurerestore

iOS 11.3.1のFirmware

iOS 11.3.1のshsh2

iOS 11.4のFirmware (署名中のFirmware)

Mac or Linux or Windows 

準備

ここからの作業は全てパソコンで行います。

まずはiOS 11.3.1のFirmwareをダウンロードしてください。

iPhone 5s

iPhone_4.0_64bit_11.3.1_15E302_Restore.ipsw

iPhone SE

iPhone 6

iPhone_4.7_11.3.1_15E302_Restore.ipsw

iPhone 6s

iPhone 6 Plus

iPhone_5.5_11.3.1_15E302_Restore.ipsw

iPhone 6s Plus

iPhone 7

iPhone_4.7_P3_11.0_11.3.1_15E302_Restore.ipsw

iPhone 8

iPhone 7 Plus

iPhone_5.5_P3_11.0_11.3.1_15E302_Restore.ipsw

iPhone 8 Plus

iPhone X

iPhone10,3,iPhone10,6_11.3.1_15E302_Restore.ipsw

iPad Air

iPad_64bit_11.3.1_15E302_Restore.ipsw

iPad mini 2

iPad Air 2

iPad_64bit_TouchID_11.3.1_15E302_Restore.ipsw

iPad mini 3

iPad mini 4

iPad Pro (12.9-inch)

iPadPro_12.9_11.3.1_15E302_Restore.ipsw

iPad Pro (9.7-inch)

iPadPro_9.7_11.3.1_15E302_Restore.ipsw

iPad Pro (12.9-inch, 2nd Generation)

iPad_Pro_HFR_11.3.1_15E302_Restore.ipsw

iPad Pro (10.5-inch)

iPad 5th Generation

iPad_64bit_TouchID_ASTC_11.3.1_15E302_Restore.ipsw

iPad 6th Generation

iPod Touch 6th Generation

iPodtouch_11.3.1_15E302_Restore.ipsw

 

また、署名中かつiOS 11.3.1と互換性のあるSEPをもつFWもダウンロードしておきます。現在ならiOS 11.4.1で良いです。

ただし、A11デバイスではFace/Touch IDと互換性がありません。やらないほうがいいです。

iPhone 5s

iPhone_4.7_11.4.1_15G77_Restore.ipsw

iPhone SE

iPhone 6

iPhone_4.7_11.4.1_15G77_Restore.ipsw

iPhone 6s

iPhone 6 Plus

iPhone_5.5_11.4.1_15G77_Restore.ipsw

iPhone 6s Plus

iPhone 7

iPhone_4.7_P3_11.0_11.4.1_15G77_Restore.ipsw

iPhone 8

iPhone 7 Plus

iPhone_5.5_P3_11.0_11.4.1_15G77_Restore.ipsw

iPhone 8 Plus

iPhone X

iPhone10,3,iPhone10,6_11.4.1_15G77_Restore.ipsw

iPad Air

iPad_64bit_11.4.1_15G77_Restore.ipsw

iPad mini 2

iPad Air 2

iPad_64bit_TouchID_11.4.1_15G77_Restore.ipsw

iPad mini 3

iPad mini 4

iPad Pro (12.9-inch)

iPadPro_12.9_11.4.1_15G77_Restore.ipsw

iPad Pro (9.7-inch)

iPadPro_9.7_11.4.1_15G77_Restore.ipsw

iPad Pro (12.9-inch, 2nd Generation)

iPad_Pro_HFR_11.4.1_15G77_Restore.ipsw

iPad Pro (10.5-inch)

iPad 5th Generation

iPad_64bit_TouchID_ASTC_11.4.1_15G77_Restore.ipsw

iPad 6th Generation

iPod Touch 6th Generation

iPodtouch_11.4.1_15G77_Restore.ipsw

 

ダウンロードが終わったら、iOS 11.4.1のファームウェアを解凍します。

そして、自分のデバイスにあったBasebandとSEPを取り出してください。

デバイス名表示一覧 - diosra2’s blog

例えば、iPhone 5s (iPhone6,1)ならn51ap, BBはMav7Mav8なので、必要なのは下記のものとなります。

Firmware/Mav7Mav8-8.55.00.Release.bbfw

Firmware/all_flash/sep-firmware.n51.RELEASE.im4p

また、BuildManifset.plistも必要なので、これも用意しておきます。

 

復元する

復元するにはデバイスをUSB接続して以下のコマンドを実行します。自動でリカバリーモードとなり、復元が開始されます。

復元コマンドは以下のようになります。(mac/linux用です。windowsの場合は少し異なりますが、だいたい同じです。)

*iPhone 8などのA11デバイスではTouch/Face IDが動作しなくなるので、復元するのはやめたほうがいいです。

User$ ./futurerestore -t [shsh2] -b [iOS 11.4.1のBaseband] -p [iOS 11.4.1のBuildManifset] -s [iOS 11.4.1のSEP] -m [iOS 11.4.1のBuildManifset] [iOS 11.3.1のIPSW]

 

iPad (Wi-Fiのみ)や、iPod TouchにはBasebandはないので、その場合は以下のコマンドになります。

User$ ./futurerestore -t [shsh2] --no-baseband -s [iOS 11.4.1のSEP] -m [iOS 11.4.1のBuildManifset] [iOS 11.3.1のIPSW]

 

例えば、iPhone 5sでiOS 11.3.1に復元したい場合は以下のようになります。

User$ ./futurerestore -t [shsh2] -b Mav7Mav8-8.55.00.Release.bbfw -p BuildManifest.plist -s sep-firmware.n51.RELEASE.im4p -m BuildManifest.plist iPhone_4.0_64bit_11.3.1_15E302_Restore.ipsw

 

*注意点

"-b, -p"の代わりに"--latest-baseband"、"-s, -m"の代わりに"--latest-sep"のコマンドを使用することで、自動で最新バージョンのBB/SEPをダウンロードし、復元することができます。また、"-i"で署名されているFWを指定することで、"-b, -p, -s, -m"の指定なしで自動でBB/SEPを取り出し復元することができます。

ただし、--latest-xxコマンドを使用した場合、ダウンロードミスやSEP互換性の不一致などによって復元失敗を起こすリスク、-iを指定した場合はzip解凍ミスなどによって復元失敗を起こすリスクがあります。futurerestoreする場合、ほとんどは失敗すると困る状況で行うことになると思うので、手動指定を行い、できる限り失敗するリスクを減らすことをお勧めします。

手順通りに正しく行えば、基本的には失敗しないので安心してください。

 

復元が完了したらおしまいです。お疲れ様でした。

noncereboot1131を使用してiOS 11.2~11.3.1からアップ・ダウングレード、復元する。

pwn20wn氏からempty_listを使用したnoncereboot1131がリリースされました。

対応iOS

iOS 11.0-11.3.1

 

利用価値 

現段階では無いです。というか使わないほうがいいです。

ただし、A11デバイス以外でiOS 11.3.1復元が間に合わずに現在のiOSがiOS 11.3 beta、かつ11.3.1のshsh2を保存していた場合のみ、beta 5/6が署名中の今なら失敗しても最悪やり直せますので、そのような場合は試してみても良いかと思います。

*どの場合もshsh2がないとダメなので注意してください。

利用する価値のあるパターン

A7デバイスで、iOS 11.3.1から10.2-10.3.3にダウングレードしたい。

A7-A9(A10)デバイスで、iOS 11.3 beta 5/6から11.3.1(正式版)にアップデートしたい。

 

A11デバイスではFace/Touch IDが確実に動作しなくなるので注意してください。 

 

使用方法

Enter your generatorにshsh2のgeneratorの値を入力します。

f:id:diosra2:20180614233216p:plain

この場合は「0x0123456789abcdef」です。

 

*empty_list自体が不安定なので、かなり失敗しがちです。起動から1~2分経過し、デバイスがある程度落ち着いてから行うと少し成功率が上がります。

Setできたらデバイスをリカバリーモードに突入させ、setしたapnonceのshsh2を使用してfuturerestoreすることができます。

 

futurerestore

A7デバイスをiOS 10.2-10.3.3に復元したい場合、こちらを参考にしてください

 

iOS 11.3.1に復元したい場合はこちらです: iOS 11.3.1にfuturerestoreする。

 

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