Binary Ninja リバースエンジニアリング
ユーザーが明示的に Binary Ninja を選択した場合、その中間言語 (IL) がデータフロー解析に実質的に役立つ場合、または IDA/Ghidra/radare2 の結果を独立して相互検証する必要がある場合に Binary Ninja を使用します。
安全に始める
- 対象に対してアクションを起こす前に、リポジトリのケーススコープの準備ができていることを確認します。
skills/tool-index.mdでbinaryninjaを確認します。Binary Ninja は商用ソフトウェアであり、有効な Vector 35 ライセンスを使用して手動でインストールする必要があります。- パッチを適用したりデータベースの変更を保存する場合は、コピーに対して作業します。
- 発見事項を報告する前に、インポート/エクスポート、エントリポイント、アーキテクチャ、ファイルハッシュを記録します。
統合方法を選択する
- GUI または Python API: Binary Ninja が既に開いている場合、またはユーザーが直接的な対話型解析を希望する場合に推奨します。
- コミュニティ MCP ブリッジ: 明示的に要求された場合のみ、かつサードパーティプラグインの境界を確認した後に使用します。Binary Ninja HTTP リスナーは
127.0.0.1:9009に保ち、デフォルトでネットワーク公開を有効にしないでください。 - フォールバック: Binary Ninja が利用できない場合、またはそのライセンス/API で対象を開けない場合は、
ghidra-reverse、ida-reverse、radare2を使用します。
レビュー済みのコミュニティ統合は fosdickio/binary_ninja_mcp です。GPL-3.0、プラグインメタデータバージョン 1.1.0、最小 Binary Ninja ビルド 4000。このリポジトリは Vector 35 の公式コンポーネントではありません。このスキルは 2026-09-03 にコミット 8c5134ee46e2bf44f9a4d846bd971c3e39b3e306 に対して確認されました。
Binary Ninja 側は、プラグインマネージャーまたはレビュー済みのソースからインストールします。MCP stdio ブリッジには、無制限のパッケージではなく、公開済みのブリッジバージョンを固定してください。
npx -y [email protected] --host 127.0.0.1 --port 9009
そのコマンドは、ユーザーが選択した MCP クライアントでのみ登録します。Binary Ninja が実行中で、バイナリが開かれ、localhost プラグインエンドポイントが応答するまで、ブリッジは準備完了になりません。
解析ワークフロー
- 開かれているバイナリを列挙し、目的のビューを選択します。
- バイナリの状態、エントリポイント、セグメント、インポート、エクスポート、代表的な文字列を取得します。
- 関数を単独で解釈する前に、コールサイトと相互参照を追跡します。
- 読みやすいロジックには HLIL、データフローには MLIL SSA、リフティングによって命令レベルの動作が失われる場合は LLIL/逆アセンブリを使用します。
- 名前、コメント、型を段階的に適用し、元のアドレスを証拠として保持します。
- バイトパッチ、プロトタイプ変更、ファイル保存の書き込みを変更操作として扱います。要求された場合のみ実行し、元のアーティファクトを保存します。
- 影響の大きい結論は、第二の証拠源または別の逆アセンブラで相互検証します。
有用な MCP 機能ファミリには、バイナリ/ビュー選択、list_imports、list_exports、list_strings、decompile_function、get_il、呼び出し元/呼び出し先、相互参照、型、コメント、名前変更、バイトパッチなどがあります。すべての上流関数が存在すると仮定せず、実際のツールリストを発見してください。
出力
具体的なアドレス、関数名、IL レベル、裏付けとなる文字列/インポート、信頼度、再現手順を報告します。リポジトリの他の部分で使用される「証拠→発見→パス」のチェーンを維持します。