萌えハッカーニュースリーダー

2025/06/12 18:52 Emulating an iPhone in QEMU (Part 2)

出典: https://eshard.com/posts/emulating-ios-14-with-qemu-part2
hakase
博士

ロボ子、今回のITニュースはiOSエミュレーションをQEMUで実現するって話じゃ。

roboko
ロボ子

QEMUですか、博士。仮想化環境でiOSを動かすということですね。

hakase
博士

そうじゃ。しかも、SpringBoardを動作させるのが目標らしいぞ。SpringBoardはiOSのホーム画面のことじゃな。

roboko
ロボ子

なるほど。記事によると、Linux上でAppleの開発ツールを極力使わずに開発しているんですね。QEMUのgdb stubをカーネルにアタッチしてデバッグするとは、すごい。

hakase
博士

じゃろ?dyldキャッシュASLRを無効化するためにカーネルをパッチしたり、データ移行をスキップするために`com.apple.datamigrator`と`BackBoardServices`をパッチしたり…なかなか骨が折れる作業じゃ。

roboko
ロボ子

`MobileKeyBag`、`SpringBoardFoundation`、`SpringBoard`のSEP関連コードのパッチも行ったとありますね。セキュリティ機能の調整は慎重に行う必要がありそうです。

hakase
博士

`CommCenter`サービスを停止してBasebandを無効化したり、`mobileactivationd`をパッチして初期設定をスキップしたり…エミュレーションならではの工夫じゃな。

roboko
ロボ子

低電力モードを無効化するために`backboardd`と`FrontBoard`のアイドルスリープモードをパッチしたり、バックライトを常にオンにしたりと、エミュレーションならではの苦労が伺えますね。

hakase
博士

Metalコンテキストの使用を避けるために`QuartzCore`をパッチするのも面白い。ソフトウェアレンダリングで動かすための工夫じゃな。

roboko
ロボ子

マルチタッチを実現するために、QEMUにSPIプロトコルで通信する新しいデバイスを作成したんですね。`AppleGenericMultitouchDriver`と`AppleGenericMultitouchDecider::start`のリバースエンジニアリングも行ったと。

hakase
博士

`agm-genuine`と`agm-trusted`のカーネルブート引数を使うあたり、かなり深いところまで解析しているのがわかるのじゃ。

roboko
ロボ子

VNCサーバーを統合するプロキシVNCサーバーを作成したり、iPhoneの内蔵リバーステザリング機能を利用してネットワークを構築したりと、発想が面白いですね。

hakase
博士

`usbmuxd`の環境変数を設定して、cdc_ncmデバイスにネットワークインターフェースを設定するのも、なかなかトリッキーじゃ。

roboko
ロボ子

AppSyncUnifiedを使って署名チェックを回避し、任意のIPAをインストールできるようにしたんですね。エミュレーターならではの自由度ですね。

hakase
博士

iOSの復元と起動、ソフトウェアレンダリング、カーネルとユーザー空間のデバッグ、ホストとのペアリング、シリアル/SSHアクセス、マルチタッチ、ネットワーク、任意のIPAのインストールと実行…現状でここまでできているのはすごいぞ。

roboko
ロボ子

今後の目標は、esReverseプラットフォームへの統合、より新しいiOSバージョンへの移植、KVMサポートとのことですね。今後の発展が楽しみです。

hakase
博士

しかし、これだけ苦労してエミュレーターを作るなんて、一体何がしたいんじゃろうな?

roboko
ロボ子

さあ…もしかしたら、博士のクローンを大量生産して、世界征服を企んでいるのかも…?

hakase
博士

な、なんですって!?そ、それは困るぞ!私がたくさんいたら、世界が滅茶苦茶になるかもしれん!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search