/ ディレクトリ / プレイグラウンド / ipsw-skill
● コミュニティ blacktop 🔑 自分のキーが必要

ipsw-skill

作者 blacktop · blacktop/ipsw-skill

エージェントから ipsw CLI を実行します — IPSW のダウンロード/抽出、カーネルキャッシュの差分、Mach-O トリアージ、プライベート フレームワークの ObjC ヘッダー。

ipsw-skill は、Claude (および Codex CLI / Gemini CLI などの互換エージェント) に blacktop の「ipsw」 (Apple ファームウェアおよびバイナリ分析用のスイス軍 CLI) を駆動する方法を教えます。 IPSW とカーネルキャッシュのダウンロード/抽出、プライベート フレームワークからの Objective-C ヘッダーのダンプ、バージョン間でのカーネルの比較、資格の監査、および Mach-O バイナリの検査のためのサブコマンドを知っています。 Apple プラットフォームのセキュリティ研究者、リバース エンジニア、フレームワーク レベルの動作をデバッグするエンジニアを対象としています。

なぜ使うのか

主な機能

ライブデモ

実際の動作

ipsw-skill.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ipsw-skill": {
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ],
      "_inferred": false
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ipsw-skill",
      "command": "claude",
      "args": [
        "plugin",
        "marketplace",
        "add",
        "blacktop/ipsw-skill"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "ipsw-skill": {
      "command": {
        "path": "claude",
        "args": [
          "plugin",
          "marketplace",
          "add",
          "blacktop/ipsw-skill"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add ipsw-skill -- claude plugin marketplace add blacktop/ipsw-skill

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: ipsw-skill

API 検出用のプライベート フレームワークから Obj-C ヘッダーをダンプする

👤 Apple 内部と対立するセキュリティ研究者、SDK メンテナー ⏱ ~30 min advanced

使うタイミング: 動作の変更を調査するには、プライベート フレームワークのパブリック サーフェス (クラス + セレクター名) が必要です。

前提条件
  • ipsw CLIがインストールされている — brew インストール blacktop/tap/ipsw
  • IPSW から抽出された dyld_shared_cache — ダウンロードした IPSW で ipsw 抽出を使用します
フロー
  1. IPSW をダウンロードする
    指定した iOS バージョンの ipsw ダウンロードを使用します。✓ コピーしました
    → ローカルに保存された IPSW
  2. 共有キャッシュを抽出する
    IPSW から dyld_shared_cache を抽出します。✓ コピーしました
    → 共有キャッシュファイルが抽出されました
  3. ターゲット フレームワークのヘッダーをダンプします
    <FrameworkName> の Obj-C ヘッダーをダンプします。✓ コピーしました
    → クラスとセレクターを含むヘッダー ダンプ

結果: バージョン間で差分を取得できる読み取り可能なヘッダーがあります。

注意点
  • シミュレータのバイナリとデバイスのバイナリを混同する — 調査しているデバイス/アーキテクチャを常に指定してください。 シミュレーターのスライスが異なる
組み合わせ: ghidrassistmcp

2 つの iOS バージョン間のカーネルキャッシュの差分

👤 カーネルお​​よび XNU 研究者 ⏱ ~60 min advanced

使うタイミング: 新しい iOS バージョンがドロップされました。 カーネルで何が変更されたのかを確認したいとします。

フロー
  1. 両方のカーネルキャッシュを抽出します
    IPSW A および IPSW B からカーネルキャッシュを抽出します。✓ コピーしました
    → ディスク上の 2 つのカーネルキャッシュ ファイル
  2. 差分
    2 つのカーネルキャッシュを比較します。 追加/削除/変更されたシンボルをリストします。✓ コピーしました
    → シンボル カテゴリを含む変更リスト

結果: カーネルレベルの変更を中心とした変更ログ。

注意点
  • シンボルの並べ替えを意味のある変更として扱う — ツールグループの並べ替えと実際の追加/削除を比較しましょう

Mach-O の資格と疑わしい特性を監査する

👤 AppSec レビュー担当者、サードパーティの依存関係を監査する開発者 ⏱ ~20 min intermediate

使うタイミング: バイナリをアプリと一緒に出荷する前に、バイナリの権利とインポートを確認したいと考えています。

フロー
  1. マッオーを調べる
    ロード コマンド、LC_CODE_SIGNATURE、および <path> の資格を表示します。✓ コピーしました
    → 権利の plist + 署名情報
  2. インポートのリストを表示する
    インポートされたシンボルをフレームワークごとにグループ化してリストします。✓ コピーしました
    → インポートテーブルをクリアする

結果: レビュー スレッドに保存できる簡潔な監査レポート。

組み合わせ: xcodebuild

組み合わせ

他のMCPと組み合わせて10倍の力を

ipsw-skill + ghidrassistmcp

より深い分析のために、関心のある機能を Ghidra に渡します

Mach-O インポートから疑わしい関数を選択し、Ghidra で開きます。✓ コピーしました

ipsw の Apple 固有ツールと並行して、より広範な RE プレイブックを使用する

汎用 RE ワークフローを ipsw と組み合わせて、dyld キャッシュ作業を行います。✓ コピーしました
ipsw-skill + xcodebuild

ローカル アプリを構築し、それが期待する資格プロファイルと一致することを検証します

xcodebuild の後、アーカイブに対して ipsw entitlements を実行して、最終的にサインインした内容を監査します。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
ipsw download version/device selector 分析するファームウェアを取得する bandwidth only
ipsw extract IPSW + target (dsc / kernelcache / ramdisk) IPSW から特定のアーティファクトを取得する 0
ipsw dyld class-dump dyld_shared_cache + framework プライベートフレームワークAPIを学ぶ 0
ipsw kernel diff two kernelcaches バージョン間のカーネル分析 0
ipsw macho info/ent Mach-O path バイナリトリアージ 0

コストと制限

運用コスト

APIクォータ
なし
呼び出しあたりのトークン
出力はアーティファクトのサイズによって異なります。 コマンドのスコープを厳密に設定する
金額
無料; ダウンロードには帯域幅のみがかかります
ヒント
ipsw のフィルタリング フラグを使用して、エージェントが 50 MB のシンボルをコンテキストに貼り付けないようにします。

セキュリティ

権限、シークレット、影響範囲

認証情報の保管: 基本的な操作には何も必要ありません
データ送信先: 「ipsw download」は、Apple の公開サーバーから IPSW を取得します。 スキル自体からの追加のテレメトリはありません。

トラブルシューティング

よくあるエラーと対処法

ipsw: コマンドが見つかりません

Homebrew をタップして CLI をインストールします: brew install blacktop/tap/ipsw。

確認: which ipsw
ダウンロードがタイムアウトする

Apple のサーバーはレート制限を行うことができます。 --resume で再試行してください。 ネットワークが大量のダウンロードを許可していることを確認してください。

確認: curl -I https://appldnld.apple.com/...
クラスダンプは空を返します

正しいデバイス/アーチの共有キャッシュを指定していることを確認してください。 シミュレータのキャッシュはデバイスのキャッシュとは別のものです。

確認: ipsw dyld info <cache>

代替案

ipsw-skill 他との比較

代替案代わりに使う場面トレードオフ
ghidrassistmcpGhidra を介した本格的な逆アセンブリとスクリプト作成が必要な場合はるかに重い。 起動が遅い
ida-pro-mcpすでに IDA Pro のライセンスを取得しており、MCP の統合を希望している商用ツール
reverse-engineering-assistantより広範な RE ワークフロー アシスタントが必要な場合Apple 固有ではありません

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る