diosra2’s blog

iOSのJailbreak、ダウングレード

32-bitデバイスのSHSH blobsをDumpする


*基本は以下の方法ですんなりできます。 これは実際にpayloadをビルドしてやってみたい、中級者以上向けです。

(自分がやってみたところ、OdysseusのはiPod touch 5Gでは動かなかったので、自前で作る必要がある場合もあるかもしれません。)

 

Payload

まず、xerub氏のibexをGNU Arm Embedded Toolchainでコンパイルします。

この際、自分の持っているデバイスごとにiBEC(or iBoot)のoffsetを(IDA ProやHooper Disaaemblerあたりを使用して)取得する必要があります。

payloadを動かすためのiBootのバージョンは特に関係無いので、"iOS 7.1.2のiBECを使用すること"をお勧めします。(ibexにはiPhone 4や4sの"iBoot用の"(iBECではない)offsetがすでに用意されているのでiOS 7だと参考にしやすいです。)

 

iBEC

iBECには未署名コードが実行できるようパッチが必要です。先ほどoffsetを得たiBECをxpwntoolで復号化し、パッチを当ててimg3ファイルフォーマットにもどします。iBoot32Patcherが必要です。

(FWのIVKeyはThe iPhone Wikiに載っています。)

 

> ./xpwntool iBEC.original.dfu iBEC.dec -iv [IV] -k [Key] -decrypt

> ./xpwntool iBEC.dec.img3 iBEC.dec

> ./iBoot32Patcher iBEC.dec pwnediBEC.dec -r -d -c go [TARGET_LOADADDR]

> ./xpwntool pwnediBEC.dec pwnediBEC -t iBEC.dec.img3

 

出来上がった"pwnediBEC"が後で実際に使うやつです。

*loadaddrはデバイスごとに異なります。例えばiPhone 4なら0x40000000、iPhone 5なら0x80000000です。

 

iBSS

iBSSも同様にパッチしますが、最後にimg3ファイルフォーマットにもどす必要はありません。

> ./xpwntool iBSS.original.dfu iBSS.dec -iv [IV] -k [Key]

> ./iBoot32Patcher iBSS.dec pwnediBSS -r

 

 

kloaderでiBSSをbootstrap

blobをdumpするのに必要なものがすべて揃ったら、kloaderを使用してデバイスを(通称)kDFU modeにします。(A5デバイス以降)

これを動かすにはJailbreakが必要です。また、脱獄にtfp0(or hgsp4) patchが含まれている必要があります。

h3lixはtfp0の代わりにhgsp4を使用するのでget_kernel_task()内の

task_for_pid(mach_task_self(), 0, &kernel_task))

host_get_special_port(host, HOST_LOCAL_NODE, 4, &kernel_task))

に書き換えればOKです。

 

デバイスをkDFU modeにするには、iOS側でSSHを使用して以下のコマンドをrootで実行します。あらかじめkloaderとpwnediBSSをiOSデバイスに転送しておきましょう。

> ./kloader pwnediBSS

 

irecoveryでblobをdump

デバイスをkDFU Modeにしたら、pwnediBECをデバイスに送信します。

> ./irecovery -f pwnediBEC

数秒後、リカバリーモードとなるのでリカバリーシェルを開きます。

> ./irecovery -s

リカバリーシェルを開いたら、payloadを転送してblobをデバイスのメモリ内にdumpさせます。

>> /send payload

>> go blob

>> /exit

リカバリーシェルから出たら、実際にパソコン側にblobをdumpします。

> ./irecovery -g blobs.dump

> ./irecovery -a

 

blobs.dumpが目的のダンプです。

最後に、blobを実際にSHSHとして使える形にします。実際のiOSデバイスに入っているipswを用意してください。

> ./ticket blobs.dump blobs.plist [実機のFWバージョンのIPSW] -z

 

validateでエラーが出なければOKです。

> ./validate blobs.plist [実機のFWバージョンのIPSW] -z

 


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