Android デバイスで完全な iOS 16.5 ファームウェアを実行する

2026/10/23 0:26

Android デバイスで完全な iOS 16.5 ファームウェアを実行する

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

HackiOS は、Apple の許可なく、Android ハードウェア(具体的には POCO X5 Pro 5G)および Linux システム(QEMU を介して)で修正された iOS 16.5 を直接実行することに成功したことで、画期的な進歩を成し遂げました。このプロジェクトは OOSEX GANG によって独自に開発され、XNU カーネルをパッチ適用し、標準的な Apple のアップデートファイルから必要なコンポーネントを抽出することで、Wi-Fi や永続的ストレージなどの特徴をエミュレートしています。システムは最大 8 コアの CPU で 2.4GHz の周波数で動作し、Mesa/freedreno ドライバーを使って実際のハードウェア部品を駆動させながら、ロック画面、ホーム画面、標準のウォールペーパーを含む完全に機能的なインターフェースを起動します。現在 Safari、写真、メモ、設定、ウィジェットが実証されており、システムジェスチャー、マルチタッチ、リブート間のデータ永続性をサポートしています。Metal グラフィックス支援はまだ開発中(シェーダーの実装率は約 59%)であり、Secure Enclave などハードウェアの制限により App Store コンテンツは引き続き制限されていますが、この成就是、非対応アーキテクチャ上で複雑なオペレーティングシステムのリバースエンジニアリングに関する主要な概念実証となります。セットアップには、GPU、Wi-Fi、オーディオ支援のためのベンダーファームウェアを抽出する必要があり、セッションは約 15 分間続き、その後リロードが必要です。

本文

HackiOS: Android ハードウェアでの iOS 16.5 実行プロジェクト

HackiOS は、Android 製スマートフォンのハードウェア上で Apple のオープンソース XNU カーネル(バージョン xnu-8796.121.2、iOS 16.5)を実行し、その上に 未変更の iOS 16.5 ユーザーランドを動作させる研究プロジェクトです。

プロジェクト概要

このシステムを実現するために利用されている主要コンポーネントは以下の通りです:

  • 自作 EFI ローダー: ブートプロセスを担う。
  • 閉鎖的ドライバーの代替品: Apple 公式ドライバーに代わる実装。
  • UEFI ポート: システム起動環境の移植版。
  • Linux Wi-Fi ドライバー: 互換性レイヤー上で動作するネットワークスタック。

システムは以下の 2 つの環境で動作します:

  • POCO X5 Pro 5G (redwood, Snapdragon 778G)
    • フラッシュ(書き込み)作業は一切不要。
    • UEFI は
      fastboot boot
      コマンドで起動され、システム全体は RAM 上で動作します。
    • リブート後、スマートフォンは Android に戻ります。
  • QEMU (virt, aarch64)
    • Linux コンピュータ上での動作であり、実際のスマートフォンは必要ありません。

リポジトリ構成

本プロジェクトは以下の 2 つのリポジトリで構成されます:

リポジトリ内容
hackios-xnu-kernel
(このリポジトリ)
- XNU のパッチ
- EFI ローダー
- UEFI ポート
- Wi-Fi / QEMU スクリプト
- xl プログラム
- プリビルトされたカーネル/ローダー/UEFI
- common/ スクリプト
hackios-xnu-userland- 我々の
init

- 注入ライブラリ
- launchd ジョブ
- APFS イメージビルダー
- Apple の IPSW から iOS を抽出するスクリプト
- Metal/Mesa の対応

⚠️ 免責事項: どちらのリポジトリにも Apple ファイルは含まれていません。

ios165/fetch.sh
により、iOS 16.5 の IPSW が Apple の自 CDN からダウンロードされ、必要な要素があなたのマシン上で抽出されます。
HackiOS は OOSEX GANG による独立した研究プロジェクトであり、Apple Inc. との関連性はありません。承認・推奨も行っておりません。

動作状況一覧

動作している項目まだ動作していない項目
🔒 ロック画面: スワイプでの解除、ホーム画面(2 ページ)、標準壁紙📡 セルラー通信
🔵 Bluetooth
👆 システムジェスチャー: 上スワイプ(ホーム/スイッチャー)、エッジスワイプ(戻る)
🎮 コントロールセンター
🔋 充電機能(スマートフォンは放電のみ)
📱 アプリ: 設定、時計、カレンダー、写真、メモ、Safari など
🌤️ スマートフォンウィジェット(天気等)
⚙️ Metal 対応アプリ (進行中)
Adreno 上で動作するシステムシェーダー 456 個のうち 293 個が実装済み。
詳細:
hackios-xnu-userland/docs/air.md
👆 タッチスクリーン: Goodix GT9916、マルチタッチ、ウェイク
🔘 電源ボタン・音量キーの実装
📂 App Store / Apple ID サインイン
Secure Enclave は不可;FairPlay デモンは終了状態
⚡ CPU: 最大 8 コア (
cpus=8
)、大コア 2.4GHz
⏱️ ロック画面表示まで約 20 秒
🎥 メディア録画: ビデオおよび Live Photo
📹 GPU: Adreno 642L (
gpu=1
)
Mesa/freedreno 経由、CoreAnimation 用 OpenGL ES
🌐 Wi-Fi (WCN6750, ath11k):
設定画面からの接続、Safari 通信(速度 55〜90 Mbit/s)
🔊 サウンド: スピーカー/マイク
📷 カメラ機能(前面/背面、プレビュー、フォーカス、HEIC フォーマット)
💾 データ永続化
var_store=1
ufs_write=1
によりリブート後も維持。
スマートフォンのフラッシュ上に iOS ルートボリューム。
🛠️ ツール: Sileo + Procursus (
dpkg
,
apt
)、チート(tweaks)、SSH

⚠️ 研究用ベンチマーク: 本システムは ROM ではありません。セッションは特定の時間だけ続き、その後カーネルはローダーに戻り、ログを渡します。


素早く始める:QEMU(カーネルビルド不要)

prebuilt/
ディレクトリには、ビルド済みのカーネル、ローダー、およびプログラムが含まれています。必要なものはシステムのイメージのみで、これは Apple の IPSW をあなたのマシン上で作成します。

環境要件

  • OS: Linux x86-64
  • 空きディスク: 約 12GB
  • 空き RAM: 4GB

インストール(パッケージ)

Arch Linux:

sudo pacman -S --needed git python 7zip lz4 gcc qemu-system-aarch64 qemu-ui-gtk edk2-aarch64

Debian/Ubuntu:

sudo apt install git python3 7zip liblz4-dev gcc qemu-system-arm qemu-efi-aarch64

📝 注意: 7-Zip はバージョン 23 以上である必要があります(APFS の読み込みに必須)。

クイックスタート手順

# リポジトリクローン
git clone https://github.com/oosexgang/hackios-xnu-kernel.git hackios
cd hackios

# セットアップ (hackios-xnu-userland を同一ツリーに持ち込み、ホスト環境を確認)
common/setup.sh

# ダウンロードと抽出 (Apple の CDN から 7.4GB, 約 5〜15 分)
ios165/fetch.sh

# APFS イメージビルド (ツールチェーンがあればカーネルもビルド)
common/build.sh qemu-virt

# QEMU ウィンドウ内でのセッション開始 (約 20 分間)
common/run.sh qemu-virt

🕒 動作確認: ロック画面は起動後 2〜3 分で表示されます。

オペレーションガイド

マウス操作:

  • 左ボタン押し込み: フィンガー(タップ)
  • 解除・アプリ退出: 画面最下縁から上スワイプ
  • 戻る: 画面左端から右へスワイプ

キーボード割り当て:

キー動作
H
ホームボタン
L
ロック/電源ボタン
↑ / ↓
ボリュームアップ/ダウン
F11
(長押し)
5 指タッチ模倣

スクリプトからの操作:

# スワイプ (x=0.5, y=0.985, ...)
./qemu/touch.py swipe 0.5 0.985 0.5 0.3 250

# タップ
./qemu/touch.py tap 0.615 0.71

# キー入力
./qemu/touch.py key home

# スクリーンショット
./qemu/screendump.sh shot.png

⏳ 重要: SpringBoard が表示された直後はシステムがアプリを登録し続けています。30〜40 秒待つ必要があります。

Debian/Ubuntu UEFI ファームウェア: 起動スクリプトに以下の環境変数を追加してください:

QEMU_EFI=/usr/share/AAVMF/AAVMF_CODE.fd QEMU_VARS=/usr/share/AAVMF/AAVMF_VARS.fd

スマートフォン上での動作 (POCO X5 Pro 5G)

**POCO X5 Pro 5G (redwood)**の場合、ブートローダがロックされていない状態、adb と fastboot、および上記のイメージが必要です。ストレージへの書き込みは行われず、ファームウェア自体もリポジトリには含まれません。

ファームウェア抽出

以下のコマンドを実行して、GPU、Wi-Fi、サウンド用のファームウェアをワークスペースに移動します:

# GPU (gpu=1)
adb pull /vendor/firmware/a660_{gmu.bin,sqe.fw,zap.mdt,zap.b00,zap.b01,zap.b02} fw-gpu/

# Wi-Fi (wifi=1)
adb pull /vendor/firmware_mnt/image/wpss.{mdt,b02,b03,b04,b05,b06,b07} fw-wifi/

# サウンド (adsp=1)
adb pull /vendor/firmware_mnt/image/adsp.{mdt,b02,...,b36} fw-audio/

# ハプティクス
adb pull /vendor/firmware/aw8697_haptic.bin fw-haptic/

📝 Wi-Fi の場合:

fw-wifi/mac
(ラジオアドレス) と
fw-wifi/network
(SSID/PW) も必要です。
userland/build.sh
が使用したファームウェアを表示します。

システム起動

方法 1: イメージビルドを使用

# イメージビルド (GL=1 は GPU アクセラレーションを有効化)
common/build.sh redwood GL=1

# セッション開始 (ローダーとシステムイメージを RAM に読み込み、約 15 分間のセッション)
common/run.sh redwood 900

方法 2: xl ツールを使用(段階的な実行)

./xl enter                  # Android -> fastboot -> RAM 上のローダー (fastboot boot); USB リンク確立
./xl ramdisk                # システムイメージを RAM にアップロード (約 2.5GB, 80 秒)

# メインセッション実行
XL_SECS=900 \
XL_CMDLINE="touchscreen=1 cpufreq=1 bootcpu=7 cpus=8 gpu=1 wifi=1 adsp=1" \
./xl run

./xl screenshot shot.png    # スクリーンショット
./xl reboot                 # Android にリブート

📝

./xl
に引数を指定しない場合は、ログや録画、カメラフレーム停止などのすべてのコマンドを一覧表示します。

プリビルトのブートイメージ

リリース版には

hackios-redwood-boot.img
が添付されています。これは redwood UEFI にローダーを組み込み、
fastboot boot
で即座に起動可能なものです。Apple ファイルは含まれません(システムイメージはマシン上で作成する必要があります)。

ソースからビルド

# 指定したデバイス向けにすべてをビルド
common/build.sh <device>

構成要素のビルド詳細

  • カーネル:
    ~/theos
    (
    cctools
    ,
    iPhoneOS16.5.sdk
    ) および clang, lld が必要。
    cd xnu
    ./apply.sh && cd ../xnu-deps && ./setup.sh && cd ..
    ./xnu-build.sh -j8 -k
    
  • ローダー:
    xnuloader/build.sh
    (clang + lld-link、EDK2 不使用)。
  • イメージ:
    REST=1 userland/build.sh
    (変数はファイル上部に定義)。
  • UEFI:
    uefi/README.md
    (Project Silicium ポート)。ビルド済みは
    prebuilt/uefi
    。

他のデバイスへの移植

common/new-device.sh <codename> path/to/device.dtb

その後、

docs/PORTING.md
に従ってください(UEFI ポート、ローダーのプラットフォーム、ドライバー、ファームウェアの詳細)。


仕組みとアーキテクチャ

システム起動フローは以下の通りです:

graph TD
    Fastboot[fastboot boot] --> UEFI[UEFI (Mu-Silicium)]
    UEFI --> Loader[xnuloader (EFI アプリケーション)]
    
    subgraph XNU Components
        direction TB
        GICv3[GICv3]
        Timer[タイマー]
        Console[ビデオコンソール]
        APFS[APFS (RAM 上のイメージ、フラッシュ上の iOS ボリューム)]
        Ramfs[Ramfs (/private/var, /tmp)]
        Crypto[minicrypto の使用 (corecrypto 代替)]
        AMFI[AMFI とサンドボックスの代替品 (MAC ポリシー)]
        Drivers[ドライバー代替品: IOSurface, IOMobileFramebuffer...]
        Input[/dev/redwood-touch ← Goodix GT9916 / virtio-input]
        GPU[GPU: Adreno 642L]
        WiFi[Wi-Fi: WCN6750 (ath11k via LinuxKPI)]
        Sound[サウンド: ADSP / virtio-sound]
    end
    
    UEFI --> XNU[XNU (BCM2837 構成ベース + プラットフォーム対応)]
    
    XNU --> GICv3
    XNU --> Timer
    XNU --> Console
    XNU --> APFS
    XNU --> Ramfs
    XNU --> Crypto
    XNU --> AMFI
    XNU --> Drivers
    XNU --> Input
    XNU --> GPU
    XNU --> WiFi
    XNU --> Sound
    
    XNU --> iOSApps[iOS 16.5 launchd → logd, notifyd... → SpringBoard]
    
    subgraph Injection Points
        direction TB
        Libraries[我々のライブラリ: backboardd, SpringBoard...]
        HID[(仮想 HID サービス)]
        ObjC[(ObjC メソッド交換 — メモリ上のみ)]
        Audio[(mediaserverd への CoreAudio 出力: RedwoodAudio.driver)]
    end
    
    iOSApps --> Libraries
    Libraries --> HID
    Libraries --> ObjC
    Libraries --> Audio

💡 重要: iOS のプログラム、フレームワーク、dyld シェアドキャッシュはバイト単位に変更されていません。不足している機能は **カーネル(ドライバー代替品)**か、

DYLD_INSERT_LIBRARIES
で注入するライブラリ (
kern.exec_inject
) によって補完されています。

ディレクトリ構成

パス内容
common/
setup.sh, build.sh / run.sh, new-device.sh, devices/*.conf, ugit
xl/
USB を介したスマートフォン制御(ローダー実行、ログ、スクリーンショットなど)
xnuloader/
ローダー (loader.c), コンテナビルド (mkpayload.py)
xnu/
XNU 変更パッチ、apply.sh, export.sh
xnu-deps/
Linux 上で XNU をビルドするための依存関係とスタブ
xnu-build.sh
カーネルビルドスクリプト
uefi/
UEFI ポート (mkxnuimg.py でパッキング)
wifi/lx/
Linux Wi-Fi ドライバー構築層
qemu/
QEMU 実行、タッチ入力、スタックシンボル化
tools/
録画、UFS/フラッシュツール (mk-ath11k.sh など)、ホストテスト
prebuilt/
ビルド済みカーネル、ローダー、UEFI 部品
docs/
スクリーンショット、checks.md, PORTING.md

デバッグとスクリーンショット

ログの確認:

  • セッションログ: QEMU の stdout または
    logs/HHMMSS-run.log
    (スマートフォンから)。
  • userabort: ログに
    abort()
    を呼んだプロセスのスタックが表示されます。
  • usertrap: (
    systrace=1
    ) クラッシュ時の診断用。
  • ライブスタック (QEMU):
    qemu/touch.py stacks NAME
    ->
    qemu/symstack.py LOG NAME
    (IPSW の必要あり)。

チェック項目: チェックが嘘をつく場合は

docs/checks.md
を参照してください。

スクリーンショット取得: スマートフォンの画面からのセッションでは、以下の環境変数が必要です:

  • GL=1
    (GPU アクセラレーション)
  • REST=1
    (必要なリソースを確保)
  • gpu=1

ライセンス情報

本リポジトリ全体は Apple Public Source License 2.0 でライセンスされています。

  • 我々のコード: XNU の派生作品(APSL 2.0)およびローダー、スクリプトも同ライセンス。
  • サードパーティのコード:
    • xnu/
      : APSL 2.0
    • ath11k: BSD-3-Clause-Clear
    • FreeBSD LinuxKPI: BSD-2-Clause
    • libzbitmap (libdeflate): MIT / Corellium LLC
    • mkbootimg.py: Apache-2.0 (AOSP)
    • UEFI ドライバー: Project Silicium の配布方法に従う。

チーム(OOSEX GANG)

  • @oodze (創設者)
  • @netusd, @wannqn, @hxfuxyyXD

最新情報: t.me/oosexgangdevs

同じ日のほかのニュース

一覧に戻る →

2026/10/23 8:45

Docker は変だ

## Japanese Translation: 本文は、主に Linux コンテナが特定のコア機能を利用して孤立化されたプロセスであり、仮想マシンとは異なること、また Docker がイメージをフォルダとして管理することを明確にしています。完全な仮想化と異なり、コンテナは隔離にはネームスペースを用い、リソース管理には cgroups を用いて、管理されたディレクトリ内でバイナリを直接実行します。重要な技術的詳細として、Go で記述される `runc` ランタイムがあり、これは初期システムコールの処理に C モジュールを使用して Linux カーネルとインターフェースする必要があります。Go は `fork` などの特定の機能へのネイティブサポートを持っていないため、不足している振る舞いを近似させるために `/proc/self/exe` などのワークアラウンドが必要です。さらに、標準的な Linux カーネル API は通常ルートの権限を必要とするため、Docker デモンはデフォルトで昇権限(elevated permissions)で動作します。これを解決するためには、ルートレスコンテナランタイムは、通常ルートベースのセットアップが提供する機能を複製するために、ユーザースペースのネットワーキングスタックを再構築する必要があります。結局のところ、これらのアーキテクチャ的な制約を理解することは、安全なルートレス環境を管理するユーザーにとって不可欠であり、不要な権限昇格を避けながらシステム安定性を維持する互換性のあるインフラを設計する企業にとっても重要です。

2026/10/23 7:54

LLM が大規模な正式なソフトウェア検証の実現を可能にしています

## Japanese Translation: 研究者は、大規模言語モデル(LLM)の Claude を用いて、100 以上のオープンソースソフトウェアライブラリに対して前例のない規模での形式的検証を実行し、歴史的なマイルストーンを達成しました。Theorem との協力により、プロダクション向けソフトウェアに対する初の大規模 AI 主導の形式的検証として、アセンブリ(RISC-V)レベルで実装されたコードが検証されました。その結果、64 MB 未満の入力に対して、123 のライブラリの実行可能アーティファクトがメモリ安全性エラーやフェイルするアサートなしに正常終了することが証明されました。この達成には、Claude が Rocq コードを約 1.8 億行生成し、239 のエントリポイントを対象にクラッシュしない仕様を証明するとともに、従来のフォージングで検出されなかった深刻なバグを特定・修正する作業が行われたことが寄与しました。具体的には、カウンタのアンダーフローや境界外読み取りといった複雑な問題を含むものが含まれます。検証の対象は Linux でコンパイルされた RISC-V 命令であり、ユーザーが信頼しなくてもよいのは既知のハードウェア/ソフトウェアの数学モデル、定理ステートメント自体、および Rocq の証明チェッカーのみです。基本的安全性を超えて、このアプローチはデータ圧縮の精度やアルゴリズムの正しさ(例:red-black トリーの再平衡)といった高位のプロパティも検証しました。チームは共有作業空間戦略を採用し、証明の再利用によりトークン使用量を 17%削減するものであり、Mathlib のような数学ライブラリの成長に類似しています。形式的に検証済みであっても、形式仕様が実態と異なったり機械モデルが現実と異なる場合(例:x86/ARM システム上)には、完全なバグの不在を保証しないことに留意する必要があります。本プロジェクトでは公衆の検討のために一部の証明をリリースしており、AI 支援による検証をソフトウェア開発ワークフローでの標準へと導く道筋を用意しています。

2026/10/22 23:32

Quad9(DNS レゾルバー)がフランスから退出します

## Japanese 訳: 2026 年 11 月 24 日より、Quad9 はフランスのユーザーに対して、無料のサイバープロテクトおよび一般的なサービスを提供を永久に停止いたします。この決断は、beIN が提起した重大な訴訟において Quad9 に不利となるフランス裁判所の判断を受けたものです。beIN は、特定のドメイン名の再帰的 DNS 解決をブロックすることが、視聴覚的な権利を保護するために必要であると主張しました。裁判所は、違反が完了するまで(11 月 14 日)の金融ペナルティを約 580,000 �ーロから毎日上記 1,000 ユーロに減額しましたが、Quad9 は再帰的 DNS 解決が中立かつ受動的なサービスであり、応答を変更することはそのミッションであるプライバシー、セキュリティ、そしてインテグリティに違反するとする理由をもってこれに従うことができないと述べています。さらに、Quad9 の無料サービスには登録や身元証明は不要であり、ユーザーと管轄区域を関連付けるデータベースを持たないため、geoIP ベースの管轄区域マッピングは技術的に不可能です。フランス裁判所の要求を満たすためにグローバルなブロックを実施することは、French の法律を全世界のユーザーに適用することを意味し、Quad9 にとって許容されない越境的な先例となります。以前にも地理的な IP ブロックの実施を試みた際(例:2021 年から 2023 年にかけてドイツ)、原告が VPN を介してブロックを回避したために裁判所に対する軽蔑罪として罰金が科されるなどしました。Quad9 に対して数百のドメイン名のブロックを求めて進行中の訴訟が約 20 件あり、累積的な法的リスクは大きいです。上訴は進行中ですが、Quad9 は予定通り撤退を進めることにします。この動きにより、国家機関(例:DINUM, EDF, SNCF)、研究ネットワーク(RENATER)、大学、医療提供者、および民間企業を含む何百万人ものフランスのユーザーが、サイバー脅威からほぼ 9 年間も重要な保護を失うことになります。Quad9 は、将来、監督なしで民間企業が DNS コンテンツフィルタリングを自動化することを可能にする法律に対して警告を発し、市民に対し、日常のドメイン名lookup が刑事犯罪ではないことを明確化することを目指しています。

Android デバイスで完全な iOS 16.5 ファームウェアを実行する | そっか~ニュース