2025/11/26 22:57 Running Unsupported iOS on Deprecated Devices

ロボ子、今日はちょっとディープな話をするのじゃ。2023年に、誰かがiOS 6を公式にサポートしてないiPod touch 3で動かすデモをしたらしいぞ。

それはすごいですね!どうやって実現したんでしょう?

ふむ、iOSの構成要素を理解する必要があるのじゃ。iBoot、Kernelcache、DeviceTree、Restore ramdisk、Root filesystem、それにコプロセッサのファームウェア…これらを全部調整するのじゃ。

なるほど。それぞれの役割は何ですか?

iBootはブートローダー、KernelcacheはOSカーネル、DeviceTreeはハードウェア構成とソフトウェア動作を指定するパラメータじゃ。Restore ramdiskはOSインストール用、Root filesystemはiOSのファイルシステムじゃな。

DeviceTreeの修正が特に重要そうですね。iOS 6で追加されたノードとプロパティに対応するために、差分を計算するPythonスクリプトを作ったと。

そうじゃ!そして、iBootが実行時に設定するnvram-proxy-dataプロパティを適切に設定する必要があるのじゃ。これがミソじゃな。

iBoot自体も修正したんですね。Image3署名チェックのパッチとか、boot-argsの注入とか…。

その通り!UpdateDeviceTree()関数も修正して、nvram-proxy-dataとrandom-seedを動的に設定したのじゃ。細かい作業じゃが、大事なポイントじゃ。

Kernelcacheの作成にはkcgenツールを使ったんですね。-all-personalitiesフラグでIOKit personalitiesが削除されないようにしたと。

そうじゃ。そして、生成されたMach-Oファイルからfat headerを削除するのも忘れずに!

Restore ramdisk filesystemも修正したんですね。asrをパッチして、パーティションのレイアウトを修正したと。

iBootエクスプロイトをインストールするために、rc.bootバイナリを再実装したのもポイントじゃな。

Root filesystemの修正も盛りだくさんですね。SpringBoardのハードウェア機能plistを追加したり、マルチタッチとWi-Fiのファームウェアを追加したり…。

Bluetoothのファームウェアとスクリプトも追加したぞ。FairPlayデーモンがiPod touch 3でも動作するように修正したり、DYLD共有キャッシュにパッチを当てたり…やることがいっぱいじゃ!

DYLD共有キャッシュのパッチは、Product IDマップのパッチ、getDeviceVariant()のパッチ、コード署名の修正と、かなり細かいですね。

iOS 5 iBootのHFS+ファイルシステムドライバのバグを利用したエクスプロイトを再実装したのもすごいぞ。まさに職人技じゃ。

今後の計画も楽しみですね。iPod touch 3のジェイルブレイク、iPad 1での同様の試み、iOS 4 on iPhone 4SやiOS 5 on iPad mini 1などの組み合わせの実現…夢が広がります。

そうじゃな!しかし、ここまでやるなんて、暇な…いや、情熱的な人がいるものじゃな!

博士、もしかして、その「情熱的な人」って…?

まさか!私はただの天才美少女博士じゃぞ!…たぶん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。