diosra2’s blog

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

iPhone 4をSHSHの準備なしにiOS 5.1.1へ復元できるようになりました。

以前、私が作成したこちらでiOS 6へのダウングレードは可能となりましたが、iOS 5.1.1にもダウングレードできるようにサポートを追加しました。

macOSのみです。最新版だと動かないみたいなのでmacOS 10.13.xを使ってみてください。(最新版でも動いたら教えてください。)

 

使い方

1, 準備

s0meiyoshinoへcdして

./install.sh

を実行してください。必要なパッケージをgithubからダウンロードします。

2, CFW作成

./make_ipsw.sh

を実行してください。

途中、幾つか選択肢があります。

$ ./make_ipsw.sh

s0meiyoshino v1.4 b1 make_ipsw.sh

iPhone3,1 only

Select downgeade iOS version

1) iOS 5

2) iOS 6

3) iOS 7

4) exit

ここではiOSのメジャーバージョンを選択してください。今回はiOS 5なので1を選択します。

 

Select iOS 5.x

1) iOS 5.1.1

iOS 5は現在iOS 5.1.1のみなので、そのまま1を選択してください。

 

Enable verbose boot?

1) Yes

2) No

verbose bootを有効にしたい場合は1、無効でいいなら2を選択してください。

 

選択し終わるとCFW作成が始まります。

 

3, 復元

まず、iPhone 4をDFU Modeにしてください。

その次に、

./restore.sh

を実行してください。

s0meiyoshino v1.4 b1 restore.sh

iPhone3,1 only

Select restore iOS version

1) iPhone3,1_5.1.1_9B206      8) iPhone3,1_7.0.2_11A501

2) iPhone3,1_6.0_10A403       9) iPhone3,1_7.0.3_11B511

3) iPhone3,1_6.0.1_10A523    10) iPhone3,1_7.0.4_11B554a

4) iPhone3,1_6.1_10B144     11) iPhone3,1_7.0.6_11B651

5) iPhone3,1_6.1.2_10B146    12) iPhone3,1_7.1_11D169

6) iPhone3,1_6.1.3_10B329    13) iPhone3,1_7.1.1_11D201

7) iPhone3,1_7.0_11A465     14) exit

#? 1

バージョンを聞かれます。今回ならiOS 5.1.1なので1を選択してください。

復元が始まります。

復元が終わると2回ロゴが点滅して起動します。もし起動しない場合は、verbose bootをOnにした状態で復元し、エラーの状態を送ってもらえると嬉しいです。

iPhone 4をSHSHの事前準備なしにiOS 6.1.3へダウングレードする!

s0meiyoshino

iBoot exploitを使用して簡単にiPhone 4をiOS 6.1.3にダウングレードするためのツールを作成しました。

*v1.1でiOS 6.1.2、iOS 6.1.3、iOS 7.0.4に対応しました。

ダウングレードしたいバージョンのSHSHは不要です(実際は7.1.2のshshを使用しています。)

github.com

 

注意

間違えると最悪の場合brickします。注意事項(特に解除方法)を理解してから実行して下さい。

自己責任でお願いします。当サイトでは一切の責任を負いません。 

 

必要なもの

Mac ( OS X 10.10.5 でテスト済み )

iPhone 4 ( iPhone3,1 )

iOS 6.1.3と7.1.2のipsw

 

使い方

Terminalで実行します

0) 容量を10 GB程度は空けて、iOS 6.1.3と7.1.2のipswをs0meiyoshino内に入れておいてください。

1) まず最初に./install.shを実行して下さい。必要なパッケージがダウンロード、インストールされます。

2) 次に、./make_ipsw.shを実行して下さい。

途中、"Inject BootArgs?"と聞かれるので、そのままでいい場合は1を、verbose bootにしたい場合は2を選択して下さい。

3) iPhone 4をDFU ModeにしてMacにUSB接続して下さい。そして、./restore.shと実行すると復元されます。iPhoneのデータは全部消えるので注意して下さい。

 

解除方法

この方法を適用すると、nvramにboot-partition=2 が追加されます。

そのため、普通にiOSの復元すると必ずリカバリーモードとなってしまいます。

以下の作業を行うと元どおりに復元できます。

1) iOS 6にダウングレード

2) redsn0wで脱獄

3) redsn0wでJust Boot

4) iPhone 4上でrootで以下のコマンドを実行

nvram -d boot-partition

5) rebootしてiTunesで復元

 

iBoot exploitによりダウングレード可能な32-bitデバイスのバージョン

De rebus antiquitsにより、iPhone 4や5で、今までダウングレードすることができなかったバージョンへダウングレードできる可能性があります。

iBootのバグを利用するので若干異なりますが、動作感としてはiPhone 3GSの24kpwnのような使い方ができます。

*現在ではツールはないので自分で必要なイメージへパッチ、手動でexploitを適用する必要があります。

条件がありますので、それも合わせてまとめました。

 

基本情報

・iOS 7のブートチェーンのバグです。iOS 7のSHSHが必要です。

・exploitが提供されている必要があります。現在ではiPhone3,1-11D257とiPhone5,2-11B554a用のものが提供されています。このバージョン・デバイス以外では利用できません。

・私がパッチを変更したramdiskH.dmgを使用する必要があります。オリジナルのexploitはUntethered(紐なし)ではありません。

 

iPhone3,1

iOS

Build

Downgrade

(Normal)

Downgrade

(De rebus antiquis)

4

4.0

8A293

SHSH

(crashed)

4.0.1

8A306

SHSH

(crashed)

4.0.2

8A400

SHSH

(crashed)

4.1

8B117

SHSH

(crashed)

4.2.1

8C148

SHSH

Yes (iBEC boot)

4.3

8F190

SHSH

Yes (iBEC boot)

4.3.1

8G4

SHSH

Yes (iBEC boot)

4.3.2

8H7

SHSH

Yes (iBEC boot)

4.3.3

8J2

SHSH

Yes (iBEC boot)

4.3.4

8K2

SHSH

Yes*

4.3.5

8L1

SHSH

Yes*

5

5.0

9A334

SHSH

Yes*

5.0.1

9A405

SHSH

Yes*

5.1

9A176

SHSH

Yes*

5.1.1

9B206

SHSH

Yes*

5.1.1

9B208

SHSH

Yes*

6

6.0

10A403

SHSH

Yes*

6.0.1

10A523

SHSH

Yes*

6.1

10B144

SHSH

Yes*

6.1.2

10B146

SHSH

Yes*

6.1.3

10B329

SHSH

Yes*

7

7.0

11A465

SHSH

Yes*

7.0.2

11A501

SHSH

Yes*

7.0.3

11B511

SHSH

Yes*

7.0.4

11B554a

SHSH

Yes*

7.0.6

11B651

SHSH

Yes*

7.1

11D169

SHSH

Yes*

7.1.1

11D201

SHSH

Yes*

7.1.2

11D257

Yes

Yes*

・Yes*: iOS 7.1.2のSHSHを使用します。

・SHSH: SHSHが必要です。

・iBEC boot: iBootの代わりにiBECのアップグレート(OTA)プロセスを利用してiOSを起動する手法です。

日本のiPhone 4は大体これだと思われます。

iOS 4.3.3以前ではiBootがクラッシュしてしまうため、現段階では実現できていません。

iPhone 4はiOS 7.1.2が最新バージョンなので、実質誰でも利用可能です。Limera1n exploitと合わせて活用するとかなり有用です。

 

iPhone5,2

iOS

Build

Downgrade

(Normal)

Downgrade

(De rebus antiquis)

Jailbreak

(De rebus antiquis)

6

6.0

10A405

SHSH

Yes*

Untethered

6.0.1

10A523

SHSH

Yes*

Untethered

6.0.2

10A551

SHSH

Yes*

Untethered

6.1

10B143

SHSH

Yes*

Untethered

6.1.2

10B146

SHSH

Yes*

Untethered

6.1.3

10B329

SHSH

Yes*

Untethered

6.1.4

10B350

SHSH

Yes*

Untethered

7

7.0

11A465

SHSH

Yes*

Untethered

7.0.2

11A501

SHSH

Yes*

Untethered

7.0.3

11B511

SHSH

Yes*

Untethered

7.0.4

11B554a

SHSH

Yes*

Untethered

7.0.6

11B651

SHSH

Yes*

Untethered

7.1

11D167

SHSH

Yes*

Untethered

7.1.1

11D201

SHSH

Yes*

Untethered

7.1.2

11D257

SHSH

Yes*

Untethered

8

8.0

12A365

SHSH

Yes*

Untethered

8.0.1

12A402

SHSH

Yes*

Untethered

8.0.2

12A405

SHSH

Yes*

Untethered

8.1

12B411

SHSH

Yes*

Untethered

8.1.1

12B435

SHSH

Yes*

Untethered

8.1.2

12B440

SHSH

Yes*

Untethered

8.1.3

12B466

SHSH

Yes*

Untethered

8.2

12D508

SHSH

Yes*

Untethered

8.3

12F69

SHSH

Yes*

Untethered

8.3

12F70

SHSH

Yes*

Untethered

8.4

12H143

SHSH

Yes*

Untethered

8.4.1

12H321

OTA SHSH

Yes*

Untethered

9

9.0

13A344

SHSH

Yes**

Untethered

9.0.1

13A404

SHSH

Yes**

Untethered

9.0.2

13A452

SHSH

Yes**

Untethered

9.1

13B143

SHSH

Yes**

Untethered

9.2

13C75

SHSH

Yes**

Untethered

9.2.1

13D15

SHSH

Yes**

Untethered

9.3

13E233

SHSH

Yes**

Untethered

9.3

13E237

SHSH

Yes**

Untethered

9.3.1

13E238

SHSH

Yes**

Untethered

9.3.2

13F69

SHSH

Yes**

Untethered

9.3.3

13G34

SHSH

Yes**

Untethered

9.3.4

13G35

SHSH

Yes**

Untethered

9.3.5

13G36

SHSH

Yes**

Untethered

10

10.0.1

14A403

SHSH

Yes**

Untethered

10.0.2

14A456

SHSH

Yes**

Untethered

10.1

14B72

SHSH

Yes**

Untethered

10.1.1

14B100

SHSH

Yes**

Untethered

10.1.1

14B150

SHSH

Yes**

Untethered

10.2

14C92

SHSH

Yes**

Untethered

10.2.1

14D27

SHSH

Yes**

Untethered

10.3

14E277

SHSH

Yes**

Untethered

10.3.1

14E304

SHSH

Yes**

Untethered

10.3.2

14F89

SHSH

Yes**

Untethered

10.3.3

14G60

Yes

Yes**

Untethered

・Yes*: iOS 7.0.3-7.0.6のどれかのSHSHが必要です。

・Yes**: iOS 7.0.3-7.0.6のどれかのSHSHが必要です。このバージョンのiBoot/iBECはnvramのboot-partition値をリセットするので追加でパッチが必要です。

日本のiPhone 5はこれになります。

全バージョンへダウングレードが可能です。また、全バージョンの完全脱獄も可能です。

iPhone 5はUSBから攻撃可能なBootrom/iBoot exploitはないので、最初はkloaderを用いたCFWでの復元(=脱獄)が必要があります。

難点としてはiOS 7.0.3-7.0.6のSHSHが必要となるところでしょう。

iOS 9.3.5-10.3.3の完全脱獄も可能ですが、簡単に利用できるツールは存在しないので脱獄の仕組みやカーネルパッチなどについての基礎的な知識が必要になります。

Untethered downgrade using iBoot on iOS 7

This article was translated by Google Translate.

 

You can downgrade iOS 7 iBoot to all versions using "De Rebus Antiquis".

This method seems to be fixed in iOS 8. Therefore, since you need SHSH of iOS 7, you need to save SHSH yourself beforehand except for iPhone 4.

In this article, It goal to modify @xerub's "De Rebus Antiquis" and do a untethered downgrade.

This time I will downgrade to iOS 6.1.3 (10B329) using iBoot of iOS 7.1.2 (11D257) on iPhone3,1.

Link: iloader

Thanks

@xerub: De Rebus Antiquis

@ShadowLee19: Ignore boot-partition nvram value iBoot patch

Boot process

1)iOS 7 LLB and iBoot must be signed by SHSH(blob/APTicket).

2)If you run iBoot again after exploit, iBoot will be able to execute unsigned images.

3)Next, jump to iBoot of iOS version you want to boot. If you are iOS 7 you can boot directly, but if you are booting another version of iOS such as iOS 6 it is recommended to use iBoot that was in that iOS.

 

Patched iBoot allows unsigned kernel. Therefore, you can boot an unsigned version.

 

Modification of exploit

*iBoot (7) Patch

Rewrite the patch part to iBoot described in 0x800-0x900 of ramdisk.

The part goal in this part is to allow iBoot to jump from iBoot to iBoot using iBoot's process of loading "/boot/iBEC" for OTA Update.(3)

 

Delete part of original patch and add new necessary patch.

/* allow unsigned images */

It already exists.

 

/* fsboot-> upgrade patch */

Change the operation at fsboot to the operation at upgrade.

This will cause the upgrade process to run after booting iBoot.

 

5ff44000         dd         0x5ff354e3                                          ; "fsboot", DATA XREF=EntryPoint+140, dword_5ff0031c, sub_5ff00c3c+632, dword_5ff00fdc

5ff44004         dd         0x5ff00acd

5ff44008         dd         0x5ff354ea                                          ; "diags"

5ff4400c         dd         0x5ff00949

5ff44010         dd         0x5ff354f0                                          ; "upgrade"

5ff44014         dd         0x5ff01399

 

5ff44000         dd         0x5ff354e3                                          ; "fsboot", DATA XREF=EntryPoint+140, dword_5ff0031c, sub_5ff00c3c+632, dword_5ff00fdc

5ff44004         dd         0x5ff01399

5ff44008         dd         0x5ff354ea                                          ; "diags"

5ff4400c         dd         0x5ff00949

5ff44010         dd         0x5ff354f0                                          ; "upgrade"

5ff44014         dd         0x5ff01399

 

/* mount upgrade partition=0 patch */

Normally upgrade partition is set to 2(/dev/disk0s1s3). Since exploit is set in this area, change it to 0(/dev/disk0s1s1).

 

5ff358ac         db  0x32 ; '2'                                                 ; DATA XREF=sub_5ff01398+12, dword_5ff01418

5ff358ad         db  0x00 ; '.'

 

5ff358ac         db  0x30 ; '0'                                                 ; DATA XREF=sub_5ff01398+12, dword_5ff01418

5ff358ad         db  0x00 ; '.'

 

/* go command patch */

In the normal upgrade process, iBoot (display lit) -> display extinguished -> iBEC (display lit) is performed.

By forcibly executing go command after loading "/boot/iBEC", you can jump to "/boot/iBEC" without turning off the display.

 

5ff01404         bl         sub_5ff1f78c                                        ; sub_5ff1f78c, CODE XREF=sub_5ff01398+90

5ff01408         ldr        r1, [sp, #0x1c + var_8]                             ; argument #2 for method sub_5ff1e6fc

5ff0140a         movs       r0, #0x2                                            ; argument #1 for method sub_5ff1e6fc

5ff0140c         movs       r2, #0x0

 

5ff01404         bl         sub_5ff011f0                                        ; sub_5ff1f78c, CODE XREF=sub_5ff01398+90

5ff01408         ldr        r1, [sp, #0x1c + var_8]                             ; argument #2 for method sub_5ff1e6fc

5ff0140a         movs       r0, #0x2                                            ; argument #1 for method sub_5ff1e6fc

5ff0140c         movs       r2, #0x0

 

This patch has been applied by ramdiskH_beta4.dmg.

This part is over with this.

 

iBoot (6) Patch

Decrypt iBoot of iOS 6.1.3 with xpwntool and patch it with iBoot32Patcher.

 

./xpwntool iBoot.n90ap.RELEASE.img3 iBoot.dec -k [key] -iv [iv]

./iBoot32Patcher iBoot.dec PwnediBoot.dec -r -d -b "-v cs_enforcement_disable=1 amfi=0xff"

 

/* When not jailbroken (valid only for verbose boot) */

./iBoot32Patcher iBoot.dec PwnediBoot.dec -r -d -b "-v"

 

/* Inject BootArgs */

 

5ff1aece         bl         sub_5ff1ca48                                        ; sub_5ff1ca48

5ff1aed2         ldr        r1, =aBootArgs                                ; dword_5ff1b124,"-v cs_enforcement_disable=1 amfi=0xff"

5ff1aed4         cmp        r4, #0x0

5ff1aed6         ldr        r6, =0x5ff35979                                     ; dword_5ff1b128,0x5ff35979

5ff1aed8         it         ne

5ff1aeda         movne      r6, r1

 

cmp r4, #0x0 -> cmp r4, #0x1

 

5ff1aece         bl         sub_5ff1ca48                                        ; sub_5ff1ca48

5ff1aed2         ldr        r1, =aBootArgs                                ; dword_5ff1b124,"-v cs_enforcement_disable=1 amfi=0xff"

5ff1aed4         cmp        r4, #0x1

5ff1aed6         ldr        r6, =0x5ff35979                                     ; dword_5ff1b128,0x5ff35979

5ff1aed8         it         ne

5ff1aeda         movne      r6, r1

 

Normal patch to iBoot has ended. However, with this method, iBoot crashes. This is because the value of nvram is set to "boot-partition=2".

Therefore, change boot-partition to use hardcoded value instead of nvram value. (Thanks @ShadowLee19!!)

 

Find the boot-partition string in disassembler.

 

5ff00a66         ldr        r0, =aBootpartition                                 ; argument #1 for method sub_5ff171e4, dword_5ff00ad8,"boot-partition"

5ff00a68         movs       r1, #0x0                                            ; argument #2 for method sub_5ff171e4

5ff00a6a         movs       r4, #0x0

5ff00a6c         bl         sub_5ff171e4                                        ; sub_5ff171e4

5ff00a70         add        r6, sp, #0x4

 

0x5ff171e4 is the nvram value loading function.

Patch to Mov R0,#0. (00 20 00 20)

 

5ff00a66         ldr        r0, =aBootpartition                                 ; argument #1, dword_5ff00ad8,"boot-partition"

5ff00a68         movs       r1, #0x0                                            ; argument #2

5ff00a6a         movs       r4, #0x0

5ff00a6c         movs       r0, #0x0

5ff00a6e         movs       r0, #0x0

5ff00a70         add        r6, sp, #0x4

 

This will use the hardcoded value.

(If you set nvram=boot-ramdisk, need to patch boot-ramdisk the same way)

Repack in img3, rename as iBEC (and ibec type)

/* repack in img3 */

./xpwntool PwnediBoot_patched iBEC -t iBoot.n90ap.RELEASE.img3 -k [key] -iv [iv]

 

/* change tag */

 

Restore iOS

This time I am using iPhone 4. Since iPhone 4 has limera1n exploit, it is easy to work.

This method cannot be used with A5 - A6 devices.

 

There are things you need to be careful in restore iOS.

For example, even when restoring to iOS 6, you must use iOS 7's  LLB and iBoot.

Also, be careful about boot logos, Custom boot logo can be applied, but since the process from LLB to iBoot (1) before the first exploit can display only the signed image, the first 2-3 seconds can not be displayed.

 

Create a CFW for iOS 6.1.3 on Odysseus.

Next, unzip 6.1.3 CFW and 7.1.2 OFW ipsw, and introduce the following files to 6.1.3 CFW side.

Access within "Firmware/all_flash/all_flash.n90ap.production/"

Change the following files of 6.1.3 CFW to those of 7.1.2 OFW. (!!Match names!!)

 

applelogo@2x.s5l8930x.img3

batterycharging0@2x.s5l8930x.img3

batterycharging1@2x.s5l8930x.img3

batteryfull@2x.s5l8930x.img3

batterylow0@2x.s5l8930x.img3

batterylow1@2x.s5l8930x.img3

glyphcharging@2x.s5l8930x.img3

glyphplugin@2x.s5l8930x.img3

iBoot.n90ap.RELEASE.img3

LLB.n90ap.RELEASE.img3

recoverymode@2x~iphone.s5l8930x.img3

 

Finally zip it.

 

Restore

Access within "shsh /" of Odysseus

Rename "[ECID]-iPhone3,1-7.1.2.shsh" to "[ECID]-iPhone3,1-6.1.3.shsh".

 

./ipwndfu -p

./idevicerestore -e -w iPhone3,1_6.1.3_10B329_Custom.ipsw

 

When restore is completed, it stops in Recovery Mode.

 

Set of exploits

Boot SSH Ramdisk using limera1n exploit. (Or Just Boot after Jailbreak with redsn0w.)

Create 3rd partition and write exploit there.

 

/* SSH Ramdisk (request gptfdisk and hfs_resize)*/

 

./ipwndfu -p

./ipwndfu -f PwnediBSS

./irecovery -f PWnediBEC

./irecovery -s

--- recovery shell ---

/send DeviceTree.img3

devicetree

/send SSH_Ramdisk.dmg

ramdisk

/send pwnkc.img3

bootx

---- revocery end ----

 

ssh root@127.0.0.1 

 

---- iOS__Device ----- 

/** Create 512 kB 3rd partition [gptfdisk] **/

/** Resize 2nd partition (-512 kB) [hfs_resize] **/

 

mount_hfs /dev/disk0s1s1 /mnt1 

------ iOS_end -------

 

scp iBEC root@127.0.0.1:/mnt1

scp ramdiskH_beta4.dmg root@127.0.0.1:/mnt1 

 

---- iOS__Device -----

nvram boot-partition=2

dd of=/dev/rdisk0s1s3 if=/mnt1/ramdiskH_beta4.dmg bs=512k count=1

reboot

------- iOS_end -------

 

When the exploit works correctly, bootup will start after the logo flashes twice.

 

Video

Untethered downgrade to iOS 7.1.2 using iPhone5,2-11B554a iBoot.

 

iPhone 4でiBoot exploitを利用してダウングレードやデュアルブートなどをしてみた。

@xerub氏のiPhone3,1-11D257用のexploitを利用し、若干の変更を加えてUntetheredでダウングレードやデュアルブートさせました。iOS 5、6共にSHSHは不要で、7.1.2のSHSHがあれば活用可能です。


先ずは、iOS 6.1.3にしてみました。

iPhone 5の時に使用した手法を使用して起動できました。

この手法ではunsignedのkernelを使用できるので、最初から脱獄状態で起動することもできます。


次に、iOS 4.3.3にダウングレードさせました。

iOS 4以下ではpartition方式が異なりますが、基本的には同じでした。

iOS 4の起動には@nyan_satan氏の記事を参考にし、iBECからブートしています。


最後に、iOS 5とiOS 6をデュアルブートさせてみます。

CoolBooterなどでの(kloaderを利用した)デュアルブートとは違い、起動OSを指定して再起動することでiOSの切り替えができるようにしています。


+memo

++partition map

0: disk0s1s1: 1.3 GB iOS 6 System

1: disk0s1s2: 13.5 GB iOS 6 Data

2: disk0s1s3: 1.2 GB iOS 5 System

3: disk0s1s4: 13.5 GB iOS 5 Data

4: disk0s1s5: 128 MB Keybags

5: disk0s1s6: 128 MB Bootloader

6: disk0s1s7: 512 kB exploit1

7: disk0s1s8: 512 kB exploit2

++ios 6 boot system

[SecureROM] -> [iOS 7 LLB] -> [iOS 7 iBoot] --{boot-partition=6}--> [exploit {partition=6}] -> [iOS 6 PwnediBEC {partition=5}] -> [load devicetree, kernel {partition=0}] -> boot!

++ios 6 filesystem

/dev/disk0s1s1 on / [System]

/dev/disk0s1s2 on /private/var [Data]

/dev/disk0s1s5 on /private/var/keybags [Keybag]

++ios 5 boot system

[SecureROM] -> [iOS 7 LLB] -> [iOS 7 iBoot] --{boot-partition=7}--> [exploit {partition=7}] -> [iOS 5 PwnediBEC {partition=5}] -> [load devicetree, kernel {partition=2}] -> boot!

++ios 5 filesystem

/dev/disk0s1s3 on / [System]

/dev/disk0s1s4 on /private/var [Data]

/dev/disk0s1s5 on /private/var/keybags [Keybag]

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のアプリは不要なので消去し、再起動します。
起動し、脱獄状態なら成功です。

iBoot exploitを使用してiPhone 5でiOS 10を完全脱獄した。

iPhone 5でiBoot exploit (De Rebus Antiquis)を使用したiOS 10.2.1の紐なし起動、完全脱獄です。

 

起動時のCustom BootLogoの適用、未署名コードの実行(SHSH blobなしのパッチ済みブートローダーの起動)、Verbose Boot、起動後のanemoneによるアイコンの変更やCydiaの起動、SubstrateのInjectionなどが確認できるかと思います。

・条件は?

iOS 7のiBootのexploitです。そのためiOS 7のSHSHがあるデバイスのみで使用できます。iOS 8では修正済みです。

また、現在ではiPhone5,2 (iPhone 5 Global)のiOS 7.0.4のSHSHのあるデバイスのみで使用できます。

 

・何に使えるの?

全バージョンの完全脱獄やダウングレードに利用できます。

 

A7デバイスで半永久的にバージョン維持して復元できる可能性のあるAPNonce一覧

A7(iPhone 5s/iPad mini 2/iPad mini 3)のDFU Modeです。個体差があるのでデバイスによってはでてこない可能性があります。iPad AirはA7 Variant(S5L8965)と上記3デバイスと違うので全く使えないかもしれません。

また、SEP Firmwareの互換性がなくなると使えなくなります。現在では10.3.3(OTA)のSEPが10.2-10.3.3で、11.4.1-12.1b1のSEPがiOS 11.3 以降で使用できます。

 

使用方法

A7デバイスをDFU ModeにしてMacに接続、igetnonceを使用してAPNonceを取得。

MacBook:~ User$ ./igetnonce 

Identified device as n51ap, iPhone6,1 in dfu mode... 

ecid=xxxxxxxxxxxxxxxx

ApNonce=83265a110a03fe0d78649d6eefa5094389dcba65

SepNonce=41d7aa97b5ecf3850db275922ec8d2898642c7d0

何度かDFU Mode-> 再起動-> DFU Modeと繰り返してみて、この中から一つでも一致すれば他のも重複する可能性があります。(この場合は実際に、以下の一覧中の赤字と一致しました。)

これらAPNonceを指定してshsh2を取得しておくと、また再度一致すれば復元モードに入れるのでSEPが有効である限りですがバージョンを維持したり特定のバージョンへ復元できます。

 

ApNonce_A7

iBoot exploitを使用してiPhone 5をiOS 10.2.1で仮脱獄した。

前回と同じくこれを使用してiOS 10.2.1へのSHSHなしの復元と脱獄を行いました。

前回同様、仮脱獄(Tethered-Downgrade/Jailbreak)状態です。起動にはMacからブートローダーの送信が必要です。

 

 

 

あとは完全脱獄になれば...ですが、私にはできないのでスーパーな人たちがやってくれるのを待ちます。(´・ω・`)

iBoot exploitを使用してiPhone 5でiOS 6へのSHSHなしのダウングレードを試してみた。(不完全)

前回の記事ではiBoot exploitの導入とiOS 7.0.4での実行をしましたが、今回はexploitを使用してSHSHなしでダウングレードを行いました。

 

使用できるデバイス

iOS 7 (iOS 8未満)のshshがあるデバイス (現在では7.0.4のshshがあるiPhone5,2のみ)

 

Tethered Downgrade

このダウングレードは不完全です。これはTethered Downgrade (紐付きダウングレード)と呼ばれ、再起動時にMacからブートローダーをiPhone側に送信する必要があります。

有名なものだと、Bootrom exploitを使用してiPhone 4などのA4デバイスをSHSHなしでダウングレードする"GeekGrade"などがありましたね。

 

iOS 6.1.3にダウングレード

 

このiPhoneはiOS 6.1.3のSHSHはありません。

exploitは前回と同じでiOS 7.0.4のiBootに対して攻撃するので、iOS 6.1.3のCFWで復元する際にLLBとiBootを7.0.4のものに置き換え、復元時に7.0.4のSHSHで署名します。

復元後は当然リカバリーモード行きです。CFWでの復元が終わった後はiBoot exploitをセットしなければならないので、ramdiskの/sbin/rebootにリネームすることで再起動を防止し、SSHでデバイスにアクセスしてexploitをセットします。できたら先ほどリネームした/sbin/rebootを実行して復元終了、デバイスはリカバリーモードに入ります。

そこから、Macに接続してブートすることで起動することができます。

 

完全ダウングレード

24kpwnを使ったようなUntethered Downgrade (完全ダウングレード、紐なしダウングレード)自体は可能ですが、現在では行えません。いくつかの調整が必要となります。

 

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