Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ida-pro-mcp — IDA Proと言語モデルをMCPを介して橋渡しする、AI搭載のリバースエンジニアリングアシスタント。 | Kitploit
ツール/GitHubGitHub/mrexodia/ida-pro-mcp
静的分析動的分析 (サンドボックス)コード分析エクスプロイトリバースエンジニアリングデバッガマルウェア分析バイナリ解析学習と教育AI支援リバースエンジニアリングファームウェア解析
GitHub
11.3k1.3k4日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
mrexodia/ida-pro-mcp

ida-pro-mcp

IDA Proと言語モデルをMCPを介して橋渡しする、AI搭載のリバースエンジニアリングアシスタント。

リポジトリを見るウェブサイト

IDA Pro MCP

IDA Proでvibeリバースエンジニアリングを可能にするシンプルな MCPサーバー です。

https://github.com/user-attachments/assets/6ebeaa92-a9db-43fa-b756-eececce2aca0

動画で使用したバイナリとプロンプトは、mcp-reversing-dataset リポジトリで入手できます。

前提条件

  • Python(3.11以上)
    • idapyswitch を使用して最新のPythonバージョンに切り替えます
  • IDA Pro(8.3以上、9を推奨)。IDA Freeはサポートされていません
  • サポートされているMCPクライアント(お好みのものを選択)
    • Amazon Q Developer CLI
    • Augment Code
    • Claude
    • Claude Code
    • Cline
    • Codex
    • Copilot CLI
    • Crush
    • Cursor
    • Gemini CLI
    • Kilo Code
    • Kiro
    • LM Studio
    • Opencode
    • Qodo Gen
    • Qwen Coder
    • Roo Code
    • Trae
    • VS Code
    • VS Code Insiders
    • Warp
    • Windsurf
    • Zed
    • Kimi Code
    • その他のMCPクライアント: ida-pro-mcp --config を実行して、クライアント用のJSON設定を取得してください

注記: これには、idalibがグローバルにアクティベートされていることと、uv がインストールされていることが必要です:

root@kitploit:~
# windows
uv run "C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py"
# macos
uv run "/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py"

インストール(Claude Code)

Claude Codeに最新のIDA Pro MCPをインストールするには:

root@kitploit:~
claude plugin marketplace add mrexodia/claude-marketplace
claude plugin uninstall ida-pro-mcp@mrexodia
claude plugin install ida-pro-mcp@mrexodia

インストール(Codex)

Codexに最新のIDA Pro MCPをインストールするには:

root@kitploit:~
codex plugin marketplace add mrexodia/codex-marketplace
codex plugin remove ida-pro-mcp@mrexodia
codex plugin add ida-pro-mcp@mrexodia

インストール(Kimi Code)

Kimi Codeに最新のIDA Pro MCPをインストールするには、チャットでこのスラッシュコマンドを実行します:

root@kitploit:~
/plugins install https://github.com/mrexodia/ida-pro-mcp/tree/main
/reload

これにより、idalib MCPサーバーと idapython スキルがインストールされます。プラグインは $KIMI_CODE_HOME/plugins/managed/ にコピーされるため、uv は PATH 上にある必要があります。インストール後の最初のセッションは、 サーバーが応答する前に uv が依存関係を解決するため、遅くなります。

インストール(GUI)

注記: MCPプラグインは推奨されなくなり、最終的には非推奨になる予定です。代わりに idalib-mcp を使用してください。

IDA GUIからMCPサーバーを手動で設定する場合:

root@kitploit:~
pip uninstall ida-pro-mcp
pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip

MCPサーバーを設定し、IDAプラグインをインストールします:

root@kitploit:~
ida-pro-mcp --install

重要: インストールを有効にするには、IDAとMCPクライアントを完全に再起動してください。一部のクライアント(Claudeなど)はバックグラウンドで実行されるため、トレイアイコンから終了する必要があります。

プロンプトエンジニアリング

LLMは幻覚を起こしやすいため、プロンプトを具体的にする必要があります。リバースエンジニアリングでは、整数とバイト間の変換が特に問題になります。以下は最小限のプロンプト例です。別のプロンプトで良い結果が得られた場合は、遠慮なくディスカッションを開始するか、issueを開いてください:

root@kitploit:~
Your task is to analyze a crackme in IDA Pro. You can use the MCP tools to retrieve information. In general use the following strategy:

- Inspect the decompilation and add comments with your findings
- Rename variables to more sensible names
- Change the variable and argument types if necessary (especially pointer and array types)
- Change function names to be more descriptive
- If more details are necessary, disassemble the function and add comments with your findings
- NEVER convert number bases yourself. Use the `int_convert` MCP tool if needed!
- Do not attempt brute forcing, derive any solutions purely from the disassembly and simple python scripts
- Create a report.md with your findings and steps taken at the end
- When you find a solution, prompt to user for feedback with the password you found

このプロンプトは最初の実験に過ぎません。出力を改善する方法を見つけたら、ぜひ共有してください!

@can1357 による別のプロンプト:

root@kitploit:~
Your task is to create a complete and comprehensive reverse engineering analysis. Reference AGENTS.md to understand the project goals and ensure the analysis serves our purposes.

Use the following systematic methodology:

1. **Decompilation Analysis**
   - Thoroughly inspect the decompiler output
   - Add detailed comments documenting your findings
   - Focus on understanding the actual functionality and purpose of each component (do not rely on old, incorrect comments)

2. **Improve Readability in the Database**
   - Rename variables to sensible, descriptive names
   - Correct variable and argument types where necessary (especially pointers and array types)
   - Update function names to be descriptive of their actual purpose

3. **Deep Dive When Needed**
   - If more details are necessary, examine the disassembly and add comments with findings
   - Document any low-level behaviors that aren't clear from the decompilation alone
   - Use sub-agents to perform detailed analysis

4. **Important Constraints**
   - NEVER convert number bases yourself - use the int_convert MCP tool if needed
   - Use MCP tools to retrieve information as necessary
   - Derive all conclusions from actual analysis, not assumptions

5. **Documentation**
   - Produce comprehensive RE/*.md files with your findings
   - Document the steps taken and methodology used
   - When asked by the user, ensure accuracy over previous analysis file
   - Organize findings in a way that serves the project goals outlined in AGENTS.md or CLAUDE.md

プロンプトについて議論し、実際のマルウェア解析を紹介するライブ配信:

LLMの精度を向上させるためのヒント

大規模言語モデル(LLM)は強力なツールですが、複雑な数学計算に苦労したり、「幻覚」(事実を捏造すること)を示したりすることがあります。LLMに int_convert MCPツールを使用するよう指示してください。また、特定の操作には math-mcp が必要になる場合もあります。

もう1つ覚えておくべきことは、LLMは難読化されたコードではうまく機能しないということです。LLMを使って問題を解決しようとする前に、バイナリを一通り確認し、以下の項目を(自動的に)除去する時間を費やしてください:

  • 文字列暗号化
  • インポートハッシュ
  • 制御フロー平坦化
  • コード暗号化
  • 逆コンパイル対策テクニック

また、LuminaやFLIRTなどのツールを使用して、オープンソースライブラリコードとC++ STLをすべて解決してみてください。これにより、さらに精度が向上します。

トランスポートとヘッドレスMCP

次のようにSSEサーバーを実行して、ユーザーインターフェースに接続できます:

root@kitploit:~
uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse

idalib をインストールすると、ヘッドレスMCPサーバーも実行できます。初期バイナリを指定して開始できます:

root@kitploit:~
uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable

または、バイナリなしで起動し、後で idb_open(...) で任意のファイルを開くこともできます:

root@kitploit:~
uv run idalib-mcp --host 127.0.0.1 --port 8745

stdioベースのクライアントの場合は、次を使用します:

root@kitploit:~
uv run idalib-mcp --stdio

データベースワーカーは永続的です。各ワーカーは、それを生成したスーパーバイザーよりも長く存続する分離プロセスとして実行されます。新しいスーパーバイザー(stdioまたはHTTP経由)が、このホスト上のワーカーで既に開かれているバイナリに対して idb_open を呼び出すと、そのスーパーバイザーはそのワーカーを透過的に採用します。有効にする別個の「共有」モードはありません。ワーカーは、アイドル間隔の間にリクエストが届かなかった場合に自動終了します。

注記: idalib 機能は Willi Ballenthin によって提供されました。

ヘッドレスidalibセッションモデル

idalib-mcp は、開いている各データベースを独自のidalibワーカープロセスで維持するスーパーバイザーです。ワーカーはホストローカルのディスカバリディレクトリに自身を登録し、それらを生成したスーパーバイザーよりも長く存続します。同じパスを必要とする後続のスーパーバイザーは、実行中のワーカーを採用します。ワーカーは、アイドルTTL(デフォルト1時間)の間にリクエストが届かなかった場合に自動終了します。idb_close を呼び出すと、ワーカーを積極的に解放できます(--max-workers のスロットを空けます)。採用されたGUI/ワーカーインスタンスは強制終了ではなく分離されます。

idb_open は、mode パラメータでバックエンドを選択します:

  • prefer_headless(デフォルト): idalibワーカーを起動する(または、既にファイルを開いているワーカーを採用する)。
  • force_headless: 同じだが、ファイルを開いている実行中のGUIがあっても採用しない。
  • prefer_gui: ファイルを開いている実行中のGUIを採用する。それ以外の場合はidalibワーカーを起動する。
  • force_gui: ファイルを開いている実行中のGUIを採用する。それ以外の場合は新しいIDA GUIプロセスを起動する。

すべてのツール呼び出しには、明示的な database 引数を指定する必要があります。暗黙の「現在のデータベース」は存在しません。呼び出し元は、操作対象のセッションを指定します。

典型的なフロー:

root@kitploit:~
idb_open("/path/to/binary_a.exe", preferred_session_id="binary_a")
idb_open("/path/to/library.dll", preferred_session_id="library")

decompile("main", database="binary_a")
xrefs_to("ImportantExport", database="library")

database は、idb_open が返す(または idb_list に表示される)セッションIDである必要があります。ファイル名やパスは受け付けられません。

管理ツール

  • idb_open(input_path, mode="prefer_headless", run_auto_analysis=True, build_caches=True, init_hexrays=True, preferred_session_id=""): バイナリを開き、サブシステム(文字列キャッシュ、Hex-Rays)をウォームアップして、そのセッションIDを返します。このパスのワーカーまたはGUIがホスト上で既に実行されている場合、そのインスタンスが採用され、preferred_session_id は無視されます。
  • idb_list(): 開いているセッションと実行中のGUI IDAインスタンスを一覧表示します。各エントリには adopted(このスーパーバイザーが管理している場合はTrue、idb_open でまだ開かれていない検出済みのGUI/ワーカーの場合はFalse)、backend(worker または gui)、is_active、プロセスIDがあります。
  • idb_close(database, save=True): (任意で)保存し、セッションの登録を解除して、所有するワーカーを終了し、--max-workers のスロットを解放します。採用されたGUI/ワーカーインスタンスは強制終了されず、分離されます。
  • idb_save(session_id, path=""): セッションのIDBをディスクに保存します。通常のワーカーツールとして転送されます( が注入されます)— 両方のバックエンドで同じシグネチャです。

ワーカー制御:

  • --max-workers N: 同時データベースワーカーの最大数(0 = 無制限、デフォルト 4)。
  • IDA_MCP_MAX_WORKERS: --max-workers の環境変数によるデフォルト値。

MCPリソース

リソース は、MCPの哲学に従った参照可能な状態(読み取り専用データ)を表します。

コアIDB状態:

  • ida://idb/metadata - IDBファイル情報(パス、アーキテクチャ、ベース、サイズ、ハッシュ)
  • ida://idb/segments - 権限付きメモリセグメント
  • ida://idb/entrypoints - エントリポイント(main、TLSコールバックなど)

UI状態:

  • ida://cursor - 現在のカーソル位置と関数
  • ida://selection - 現在の選択範囲

型情報:

  • ida://types - すべてのローカル型
  • ida://structs - すべての構造体/共用体
  • ida://struct/{name} - フィールド付き構造体定義

ルックアップ:

  • ida://import/{name} - 名前によるインポート詳細
  • ida://export/{name} - 名前によるエクスポート詳細
  • ida://xrefs/from/{addr} - アドレスからのクロスリファレンス

コア関数

  • lookup_funcs(queries): アドレスまたは名前で関数を取得します(自動検出、リストまたはカンマ区切り文字列を受け付けます)。
  • int_convert(inputs): 数値をさまざまな形式(10進数、16進数、バイト、ASCII、2進数)に変換します。
  • list_funcs(queries): 関数を一覧表示します(ページング、フィルタリング対応)。
  • list_globals(queries): グローバル変数を一覧表示します(ページング、フィルタリング対応)。
  • imports(offset, count): モジュール名付きのすべてのインポートシンボルを一覧表示します(ページング対応)。
  • decompile(addr): 指定されたアドレスの関数を逆コンパイルします。
  • disasm(addr): 関数を完全な詳細(引数、スタックフレームなど)付きで逆アセンブルします。
  • xrefs_to(addrs): アドレスへのすべてのクロスリファレンスを取得します。
  • xrefs_to_field(queries): 特定の構造体フィールドへのクロスリファレンスを取得します。
  • callees(addrs): アドレスの関数によって呼び出される関数を取得します。

変更操作

  • add_bookmark(addr, name, prefix): アドレスのIDAブックマークを追加または置換します。プレフィックスなしにする場合は prefix="" を設定します。
  • set_comments(items): 逆アセンブリビューと逆コンパイラビューの両方で、アドレスにコメントを設定します。
  • patch_asm(items): アドレスでアセンブリ命令をパッチします。
  • declare_type(decls): ローカル型ライブラリにC型を宣言します。
  • define_func(items): アドレスで関数を定義します。明示的な境界にはオプションで end を指定できます。
  • define_code(items): アドレスのバイトをコード命令に変換します。
  • undefine(items): アドレスのアイテムの定義を解除し、生のバイトに戻します。オプションで end または size を指定できます。

メモリ読み取り操作

  • get_bytes(addrs): アドレスの生のバイトを読み取ります。
  • get_int(queries): ty(i8/u64/i16le/i16beなど)を使用して整数値を読み取ります。
  • get_string(addrs): ヌル終端文字列を読み取ります。
  • get_global_value(queries): アドレスまたは名前でグローバル変数値を読み取ります(自動検出、コンパイル時値)。

スタックフレーム操作

  • stack_frame(addrs): 関数のスタックフレーム変数を取得します。
  • declare_stack(items): 指定されたオフセットにスタック変数を作成します。
  • delete_stack(items): 名前でスタック変数を削除します。

構造体操作

  • read_struct(queries): 特定のアドレスで構造体フィールド値を読み取ります。
  • search_structs(filter): 名前パターンで構造体を検索します。

デバッガ操作(拡張)

デバッガツールはデフォルトで非表示です。?ext=dbg クエリパラメータで有効にします:

root@kitploit:~
http://127.0.0.1:13337/mcp?ext=dbg

制御:

  • dbg_start(): デバッガプロセスを開始します。
  • dbg_exit(): デバッガプロセスを終了します。
  • dbg_continue(): 実行を継続します。
  • dbg_run_to(addr): アドレスまで実行します。
  • dbg_step_into(): 命令にステップインします。
  • dbg_step_over(): 命令をステップオーバーします。

ブレークポイント:

  • dbg_bps(): すべてのブレークポイントを一覧表示します。
  • dbg_add_bp(addrs): ブレークポイントを追加します。
  • dbg_delete_bp(addrs): ブレークポイントを削除します。
  • dbg_toggle_bp(items): ブレークポイントを有効/無効にします。

レジスタ:

  • dbg_regs(): 現在のスレッドのすべてのレジスタ。
  • dbg_regs_all(): すべてのスレッドのすべてのレジスタ。
  • dbg_regs_remote(tids): 特定のスレッドのすべてのレジスタ。
  • dbg_gpregs(): 現在のスレッドのGPレジスタ。
  • dbg_gpregs_remote(tids): 特定のスレッドのGPレジスタ。
  • dbg_regs_named(names): 現在のスレッドの名前付きレジスタ。
  • dbg_regs_named_remote(tid, names): 特定のスレッドの名前付きレジスタ。

スタックとメモリ:

  • dbg_stacktrace(): モジュール/シンボル情報付きのコールスタック。
  • dbg_read(regions): デバッグ対象プロセスからメモリを読み取ります。
  • dbg_write(regions): デバッグ対象プロセスにメモリを書き込みます。

高度な解析操作

  • py_eval(code): IDAコンテキストで任意のPythonコードを実行します(result/stdout/stderrを含むdictを返し、Jupyterスタイルの評価をサポート)。
  • analyze_funcs(addrs): 包括的な関数解析(逆コンパイル、アセンブリ、クロスリファレンス、呼び出し先、呼び出し元、文字列、定数、基本ブロック)。

パターンマッチングと検索

  • find_regex(queries): 大文字と小文字を区別しない正規表現で文字列を検索します(ページング対応)。
  • find_bytes(patterns, limit=1000, offset=0): バイナリ内のバイトパターンを検索します(例: "48 8B ?? ??")。最大制限: 10000。
  • find_insns(sequences, limit=1000, offset=0): コード内の命令シーケンスを検索します。最大制限: 10000。
  • find(type, targets, limit=1000, offset=0): 高度な検索(即値、文字列、データ/コード参照)。最大制限: 10000。

制御フロー解析

  • basic_blocks(addrs): 後続と先行を含む基本ブロックを取得します。

型操作

  • set_type(edits): 関数、グローバル変数、ローカル変数、またはスタック変数に型を適用します。
  • infer_types(addrs): Hex-Raysまたはヒューリスティックを使用して、アドレスの型を推論します。

エクスポート操作

  • export_funcs(addrs, format): 指定された形式(json、c_header、またはprototypes)で関数をエクスポートします。

グラフ操作

  • callgraph(roots, max_depth): ルート関数から、深さを設定可能にしてコールグラフを構築します。

バッチ操作

  • rename(batch): 関数、グローバル変数、ローカル変数、スタック変数の統合バッチ名前変更操作(オプションの func、data、local、stack キーを持つdictを受け付けます)。
  • patch(patches): 複数のバイトシーケンスを一度にパッチします。
  • put_int(items): ty(i8/u64/i16le/i16beなど)を使用して整数値を書き込みます。

主な特徴:

  • 型安全なAPI: すべての関数は、IDEサポートとLLMの構造化出力を向上させるため、TypedDictスキーマを持つ厳密に型指定されたパラメータを使用します
  • バッチファースト設計: ほとんどの操作は単一アイテムとリストの両方を受け付けます
  • 一貫したエラーハンドリング: すべてのバッチ操作は [{..., error: null|string}, ...] を返します
  • カーソルベースのページネーション: 検索関数は cursor: {next: offset} または {done: true} を返します(デフォルト制限: 1000、トークンオーバーフローを防ぐため最大10000を強制)
  • パフォーマンス: 大規模プロジェクトで build_strlist が繰り返し呼び出されるのを避けるため、文字列はMD5ベースの無効化でキャッシュされます

開発

新機能の追加は非常に簡単で合理化されたプロセスです。src/ida_pro_mcp/ida_mcp/api_*.py のモジュール式APIファイルに新しい @tool 関数を追加するだけで、追加のボイラープレートなしでMCPサーバー上で関数を利用できます!以下は、get_metadata 関数を2分以内で追加するビデオです(テスト含む):

https://github.com/user-attachments/assets/951de823-88ea-4235-adcb-9257e316ae64

MCPサーバー自体をテストするには:

root@kitploit:~
npx -y @modelcontextprotocol/inspector

これにより、http://localhost:5173 にWebインターフェースが開き、テスト用にMCPツールを操作できます。

テストでは、IDAプラグインへのシンボリックリンクを作成し、JSON-RPCリクエストを http://localhost:13337/mcp に直接POSTします。シンボリックリンクを有効にする と、次のコマンドを実行できます:

root@kitploit:~
uv run ida-pro-mcp --install

main への直接コミットのチェンジログを生成します:

root@kitploit:~
git log --first-parent --no-merges 1.2.0..main "--pretty=- %s"
ツールをダウンロード
database=<id>
  • データベースごとのヘルスチェック: server_health(database=<id>) を呼び出します(転送されます)。idb_list() は、スーパーバイザーのTCP/RPCプローブから is_active を報告します。