
ipsw v3.1.716
iOS/macOS リサーチ用スイスアーミーナイフ
ipsw
iOS/macOSリサーチ用スイスアーミーナイフ
ipsw は、Appleファームウェアのリサーチとリバースエンジニアリングのためのコマンドラインツールキットです。IPSWやOTAのダウンロードと展開、Mach-Oバイナリやdyld shared cacheの調査、kernelcacheの解析、接続されたiOSデバイスの操作ができます。
Agent skill · インストール · CLIの例 · ドキュメント
AIエージェントとipswを使う
Claude Code、Codex、Gemini CLI、その他のスキルをサポートするエージェントで作業している場合は、まず ipsw-skill から始めてください。ファームウェアの抽出、バイナリ解析、Appleプラットフォームのリサーチのためのコマンドリファレンスとワークフローをエージェントに提供します。
ipsw CLIをインストールしてから、スキルを追加します:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
その後は、自然言語でタスクを依頼できます。例えば:
iPhone 15 Pro用の最新IPSWをダウンロードして、そのkernelcacheを抽出して。
このdyld shared cacheからSpringBoardServicesのObjective-Cヘッダーをダンプして。
これら2つのkernelcacheのKEXTを比較して。
スキルのREADMEには、Claude CodeプラグインやGemini CLI拡張機能など、個々のエージェント向けのセットアップ手順があります。
インストール
macOS
メンテナのHomebrew tapにはextrasビルドが含まれています:
brew install blacktop/tap/ipsw
Homebrew coreのformulaも利用可能です: brew install ipsw。
Linux
sudo snap install ipsw
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
GitHub Releasesからバイナリをダウンロードすることもできます。その他のパッケージやオプションの依存関係については、インストールガイドを参照してください。一部のコマンドはホストOSやビルドバリアントに依存します。例えばFridaサポートには別のビルドがあります。
できること
| 領域 | ツール |
|---|---|
| ファームウェア | IPSW、OTA、macOSインストーラ、Xcode、KDKのダウンロード、コンポーネントの抽出とビルドの比較 |
| Mach-O | ロードコマンド、シンボル、シグネチャ、エンタイトルメントの調査、ARM64コードの逆アセンブル |
| dyld shared cache | シンボルと相互参照の検索、dylibの抽出、Objective-Cヘッダーのダンプ、Swiftメタデータの調査 |
| カーネル | KEXTの抽出、syscallとシンボルの調査、kernelcacheの比較 |
| ファームウェアコンポーネント | IMG4のパース、AEAアーカイブの復号、iBootとコプロセッサファームウェアの調査 |
| デバイス | デバイスとアプリの一覧表示、AFCによるファイル転送、ログのキャプチャ、開発者イメージのマウント |
| App Store Connect | 証明書、バンドルID、デバイス、プロビジョニングプロファイルの管理 |
| リサーチ | クラッシュログのシンボリケート、SSH経由のデバッグ、Fridaによるトレース、LLMによる逆コンパイル |
CLIの例
例のファイルパスはご自身のものに置き換えてください。ipsw --helpを実行するか、任意のサブコマンドに--helpを追加すると、そのオプションが表示されます。
ファームウェアのダウンロードと抽出
# Download the latest IPSW for iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest
# Inspect a local IPSW and extract its kernelcache
ipsw info /path/to/firmware.ipsw
ipsw extract --kernel /path/to/firmware.ipsw
# Compare two firmware builds
ipsw diff /path/to/old.ipsw /path/to/new.ipsw
dyld shared cacheの調査
ipsw dyld info /path/to/dyld_shared_cache_arm64e
# Extract Foundation for use in other tools
ipsw dyld extract /path/to/dyld_shared_cache_arm64e Foundation
# Dump headers directly from the cache
ipsw class-dump /path/to/dyld_shared_cache_arm64e SpringBoardServices --headers -o headers
Objective-C解析にはキャッシュを直接使用してください。抽出されたdylibは、キャッシュ内の別の場所に保存されているメタデータを依然として参照する可能性があります。
バイナリとkernelcacheの調査
# Select an architecture explicitly for universal binaries
ipsw macho info /path/to/binary --arch arm64e
ipsw macho disass /path/to/binary --arch arm64e --symbol _main
# Search a directory of binaries for an imported symbol
ipsw macho search /path/to/binaries --import 'CCCrypt'
# List KEXTs, then extract one by its full bundle ID
ipsw kernel kexts /path/to/kernelcache
ipsw kernel extract /path/to/kernelcache com.apple.driver.ASIOKit -o kexts
接続されたデバイスの操作
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
LLMによる逆コンパイル
macho disassおよびdyld disassコマンドは、--decを指定すると、設定されたLLMプロバイダに逆アセンブリを送信できます。プロバイダの設定、モデルの選択、例については、逆コンパイラガイドを参照してください。
設定と自動化
CLIは~/.config/ipsw/config.yamlからYAML設定を読み込みます。別のファイルを選択するには--configを使用します。設定と環境変数については、config.example.ymlおよび設定ガイドを参照してください。
スクリプトでは、ユニバーサルバイナリを開く際に--archでアーキテクチャを選択し、短い名前が曖昧な場合は完全なdylibパスを使用してください。--jsonをサポートするコマンドは、そのヘルプに記載されています。
別個のipswdデーモンは、自動化のためのREST APIを公開しています。APIリファレンスを参照してください。
ドキュメントとコミュニティ
- Agent skillとセットアップ
- ガイドとコマンドリファレンス
- 事前計算されたファームウェアdiff
- GitHub Discussions
- Issue tracker
- DeepWiki、コードベースに関するAI生成ガイド
バグを報告する際は、ipsw version、実行したコマンド、および関連するファームウェアビルドまたはファイルタイプを含めてください。ログやクラッシュレポートからは個人情報を削除してください。
ビルドとコントリビュート
ソースからのビルドにはGo 1.26以降と、CGO用のCツールチェーンが必要です:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
開発とコントリビューションのガイドラインについては、CONTRIBUTING.mdを参照してください。
クレジット
ツールとiOS内部のドキュメントを提供してくれたJonathan Levin、Appleセキュリティリサーチコミュニティ、そしてコード、バグレポート、リサーチを提供してくれるすべての人々に感謝します。
ライセンス
MIT。