binary-ninja-reverse について
binary-ninja-reverseは、Binary Ninjaで解析するリバースエンジニア向けスキルです。ILによるデータフロー解析や別ツールとの照合を支援し、安全な分析と証拠の記録、コミュニティ製MCPブリッジの慎重な利用を案内します。
主な機能
- 01Binary Ninja GUIとPython APIのワークフロー
- 02HLIL、MLIL SSA、LLILの分析
- 03インポート、エクスポート、文字列、参照の確認
- 04アドレスに基づく証拠の記録
- 05パッチやデータベース変更の安全な手順
活用シーン
- 01関数内のデータフローの追跡
- 02別の逆アセンブラーによる結果の照合
- 03再現可能なバイナリー分析の記録
- 04指定されたMCPブリッジを介したBinary Ninjaの利用
MCP 対応
Binary Ninja向けの任意のコミュニティ製MCPブリッジを紹介します。プラグインの境界を確認し、HTTPリスナーをローカルホストに限定したうえで、選択したMCPクライアントに登録するよう案内します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zhaoxuya520/ reverse-skill --skill binary-ninja-reverseインストール後、Claude Code で/binary-ninja-reverseを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yaml
詳細
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 側は、その Plugin Manager またはレビュー済みのソースからインストールしてください。MCP stdio ブリッジについては、無制限のパッケージを使用するのではなく、公開されているブリッジバージョンを固定してください:
npx -y [email protected] --host 127.0.0.1 --port 9009
そのコマンドは、ユーザーが選択した MCP クライアントにのみ登録してください。Binary Ninja が実行中で、バイナリが開かれており、localhost のプラグインエンドポイントが応答するまでは、ブリッジは準備完了ではありません。
分析ワークフロー
- 開いているバイナリを列挙し、目的のビューを選択してください。
- バイナリのステータス、エントリポイント、セグメント、インポート、エクスポート、代表的な文字列を取得してください。
- 関数を単独で解釈する前に、呼び出し箇所とクロスリファレンスを追跡してください。
- 読みやすいロジックには HLIL を、データフローには MLIL SSA を、リフティングによって命令レベルの動作が失われる場合には LLIL/逆アセンブリを使用してください。
- 名前、コメント、型を段階的に適用してください。証拠には元のアドレスを保持してください。
- バイトパッチ、プロトタイプの変更、ファイルへの保存書き込みは変更操作として扱ってください。これらは要求された場合にのみ実行し、元の成果物を保持してください。
- 影響の大きい結論は、第 2 の証拠ソースまたは別の逆アセンブラでクロスチェックしてください。
有用な MCP 機能ファミリーには、バイナリ/ビューの選択、list_imports、list_exports、list_strings、decompile_function、get_il、呼び出し元/呼び出し先、クロスリファレンス、型、コメント、名前変更、バイトパッチングが含まれます。上流のすべての関数が存在すると仮定せず、ライブのツール一覧を確認してください。
出力
具体的なアドレス、関数名、IL レベル、裏付けとなる文字列/インポート、信頼度、再現手順を報告してください。リポジトリの他の部分で使用されている Evidence → Finding → Path のチェーンを維持してください。