Apple SiliconでiOSを仮想化する
Part 0: 未知の領域?
- vma2pwnプロジェクト: macOSゲスト仮想マシン向けに改変可能なvma2 macOSブートチェーンを生成するプロジェクトで、iOS仮想化の前段となる作業。
- iOS仮想化の可能性: Apple Siliconへの移行とMac Catalystの導入によってiOSとmacOSのオペレーティングシステムがさらに近づく中、iOSを仮想化できるのかという問いが生まれた。
- 既存研究: Corelliumの仮想iPhoneクラウド製品、qemu-t8030、Zhuowei Zhangのブログなどが関連研究として挙げられている。
Part I: 始める + 新たな発見
- AppleのVirtualizationスタックの機能: 仮想マシン向けの任意データ署名機能を発見。
- vma2pwnの必要性の低下:
_setProductionModeEnabled(false) の呼び出しにより、仮想デバイスを「セキュア」かつ「非本番」モードに設定できる。
- iOS実行戦略: macOS 12.0.1のブートチェーンを再利用し、iOS 15.0.2のシステムイメージに置き換えることで、初期化プロセスの修正を最小限に抑える。
Part II: パッチ地獄
- カーネルパッチ: 署名検証を回避するためのパッチが必要で、iOSバイナリを実行するために
PLATFORM_IOS チェックをスキップするよう修正。
- システムキーバッグ問題: システムキーバッグの非互換性により、PreBoard.appに「アップグレードするには上にスワイプ」と表示される。
- IOMFB構造体サイズの不一致: iOSシステムフレームワークとmacOSカーネル間のサイズ不一致によるカーネルパニック問題を解決。
- システムパッチ: 復元ramdiskとiOSシステムファイルへのパッチが必要で、未署名の状態で実行すると終了してしまう。
Part III: 未来
- システムキーバッグ問題の解決: さらなるパッチと、iOSシステムおよびカーネルへの理解が必要。
- タッチ機能: タッチ機能が動作するかは未確認だが、
Virtualization.framework の非公開APIを使ってタッチイベントを送れる可能性がある。
GN⁺のまとめ
- この記事は、Apple SiliconでiOSを仮想化する方法について、踏み込んだ技術的探究を提供している。
- iOSとmacOSの統合が加速する中、このプロジェクトは両オペレーティングシステム間の相互運用性を探るうえで重要な役割を果たす。
- このプロジェクトには多くの時間と労力が必要で、さらなる研究と開発が求められる。
- 類似機能を持つプロジェクトとして、Corelliumの仮想iPhoneクラウド製品がある。
1件のコメント
Hacker Newsの意見
Corelliumが法的訴訟で勝訴し、セキュリティ研究目的でiOS Cloud VMを貸し出せるようになった
macOSをiPadにインストールする方法を見つけることが次の課題になってほしい
AppleがSimulatorをEmulatorにしないのは、人々にiOSの基礎を掘り下げられたくないからだという気がする
投稿者のGitHubプロフィールによると、新卒のコンピュータサイエンス卒業生として非常に印象的な仕事をしている
qemu-t8030を作った人はspringboardの起動に成功したが、コードは公開しなかった。この進捗を現在のプロジェクトと組み合わせられれば素晴らしい
少し別の話題だが、ARM macOSをx86-64で仮想化した人がいるのか気になる
AppleはすでにXCodeでiOSシミュレータを提供している。このプロジェクトにApple提供のものと比べてどんな利点があるのか気になる
この話題に関する議論はnick's funny device emporium Discordサーバーで進行中だ