概要
HackiOS は、Androidスマートフォン上で AppleのXNUカーネル (iOS 16.5ベース)と未改変のiOSユーザースペースを動作させる独立研究プロジェクト。 独自のEFIローダーやドライバ置換、UEFIポート、Linux Wi-Fiドライバ互換レイヤーで実現。 POCO X5 Pro 5G や QEMU(virt, aarch64) 上で動作可能。 Appleのファイルは含まず、必要なiOSイメージはApple CDNから自動取得。 研究用途であり、Appleとは無関係・非公式。
HackiOS:Android上でiOS 16.5を起動するプロジェクト
- XNUカーネル(xnu-8796.121.2) をAndroidハードウェア上で起動し、未改変のiOS 16.5ユーザースペース(launchd → backboardd → SpringBoard → アプリ)を実行
- 独自EFIローダー、Apple非公開ドライバの自作置換、UEFIポート、Linux Wi-Fiドライバ互換レイヤーで動作を実現
- 動作環境
- POCO X5 Pro 5G(redwood, Snapdragon 778G):ストレージをフラッシュせず、全てRAM上で動作。再起動でAndroidに復帰
- QEMU(virt, aarch64):Linux PC上で実行可能。スマホ不要
- 本リポジトリ(hackios-xnu-kernel)はプロジェクトの半分
- XNUパッチ、EFIローダー、UEFIポート、Wi-Fi、QEMUスクリプト、プリビルドカーネル等を管理
- hackios-xnu-userlandはinit、注入ライブラリ、launchdジョブ、APFSイメージビルダー等を担当
- Appleのファイルは含まず、 ios165/fetch.sh でApple CDNからiOS 16.5 IPSWをダウンロード・抽出
動作状況・特徴
動作する機能
- ロック画面、スワイプ解除、ホーム画面(2ページ)、iOS 16標準壁紙
- システムジェスチャー(スワイプアップ、エッジスワイプ、コントロールセンター)
- 各種アプリ(設定、時計、カレンダー、写真、メモ、Safari等)、ウィジェット
- Adreno 642L GPU(Mesa/freedreno経由、OpenGL ES)
- Wi-Fi(WCN6750, ath11k)、SafariでのWi-Fi通信、最大90Mbps
- サウンド(スピーカー、マイク)、カメラ(前後、プレビュー、HEIC写真)
- Sileo + Procursus(dpkg, apt)、SSH
- データ永続化(var_store=1, ufs_write=1)、iOSルートボリュームをフラッシュ上に展開
- 最大8コア、ビッグコア2.4GHz、ロック画面まで約20秒
未対応/未実装機能
- セルラー通信、Bluetooth
- 充電(カーネル下では放電のみ)
- App Store利用、Apple IDサインイン(Secure Enclave未対応)
- 動画・Live Photo撮影
利用方法(QEMUでのクイックスタート)
必要環境:Linux x86-64、12GB空きディスク、4GB RAM
必須パッケージ:git, python, 7zip, lz4, gcc, qemu-system-aarch64, qemu-ui-gtk, edk2-aarch64等
セットアップ手順
- リポジトリ取得:
git clone https://github.com/oosexgang/hackios-xnu-kernel.git hackios - セットアップ:
cd hackios && common/setup.sh - IPSWダウンロード・抽出:
ios165/fetch.sh - イメージビルド:
common/build.sh qemu-virt - QEMU起動:
common/run.sh qemu-virt(20分のセッション、ロック画面まで2-3分)
- リポジトリ取得:
操作方法
- マウス左クリック保持=指
- スワイプアップ(下端から上):ロック解除/アプリ離脱
- 左端からスワイプ:戻る
- キー操作:H(ホーム)、L(ロック)、↑/↓(音量)、F11長押し(5本指)
POCO X5 Pro 5Gでの実行方法
- 必要条件:アンロック済みのPOCO X5 Pro 5G、adb・fastboot、ビルド済みイメージ
- ストレージには書き込まず、全てRAM上で動作
- デバイス専用ファームウェアは各自の端末からadbで抽出し、必要なディレクトリに配置
- ビルド・起動手順
common/build.sh redwood GL=1(イメージ作成)common/run.sh redwood 900(15分セッション)./xl enter(fastboot bootでローダー起動)./xl ramdisk(システムイメージをRAMに転送)- その他コマンド:
./xl screenshot shot.png、./xl reboot等
技術構成・動作概要
- fastboot boot → UEFI(Mu-Silicium) → xnuloader(EFIアプリ) → XNUカーネル → iOS 16.5ユーザースペース
- ドライバ置換:IOSurface、IOMobileFramebuffer、AppleKeyStore、ネットワークスタック等を独自実装
- 入力:/dev/redwood-touch(実機)、virtio-input(QEMU)
- GPU:Adreno 642L、Wi-Fi:WCN6750(ath11k)、サウンド:ADSP/virtio-sound
- iOSプログラム・フレームワーク・dyld共有キャッシュは未改変
- 必要な機能はカーネルまたはDYLD_INSERT_LIBRARIESによるライブラリ注入で補完
ライセンス・クレジット
- リポジトリにはiOSファイルを含まず、必要なファイルはApple CDNから取得
- xnu/はAPSL 2.0準拠、その他コードも同ライセンス
- サードパーティコードは各ライセンスを保持(詳細はprebuilt/NOTICES.md参照)
- プロジェクトチーム:OOSEX GANG — @oodze(founder)、@netusd、@wannqn、@hxfuxyyXD
- 最新情報: t.me/oosexgangdevs
このプロジェクトは研究用途限定であり、商用利用や一般的なROM配布を目的としません。Apple Inc.による承認・関与は一切ありません。
自分もOneplus 6Tで同じことやってるよ。Claudeに電話を操縦させて、adbで新しいカーネルをブートして結果をチェックしてる。生きてるって素晴らしい時代だね!