VOOZH about

URL: https://glama.ai/mcp/servers/mrexodia/ida-pro-mcp?locale=ja-JP

⇱ IDAプロMCP by mrexodia | Glama


IDAプロMCP

IDA Pro でバイブ反転を可能にするシンプルなMCP サーバー

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

ビデオのバイナリとプロンプトは、mcp-reversing-datasetリポジトリで入手できます。

利用可能な機能:

  • check_connection() : IDA プラグインが実行されているかどうかを確認します。

  • get_metadata() : 現在の IDB に関するメタデータを取得します。

  • get_function_by_name(name) : 名前で関数を取得します。

  • get_function_by_address(address) : アドレスで関数を取得します。

  • get_current_address() : ユーザーが現在選択しているアドレスを取得します。

  • get_current_function() : ユーザーが現在選択している関数を取得します。

  • convert_number(text, size) : 数値 (10 進数、16 進数) をさまざまな表現に変換します。

  • list_functions(offset, count) : データベース内のすべての関数を一覧表示します (ページ区切り)。

  • list_globals_filter(offset, count, filter) : データベース内の一致するグローバルを一覧表示します (ページ区切り、フィルター処理)。

  • list_globals(offset, count) : データベース内のすべてのグローバルを一覧表示します (ページ区切り)。

  • list_strings_filter(offset, count, filter) : データベース内の一致する文字列を一覧表示します (ページ区切り、フィルタリング済み)。

  • list_strings(offset, count) : データベース内のすべての文字列を一覧表示します (ページ区切り)。

  • decompile_function(address) : 指定されたアドレスの関数を逆コンパイルします。

  • disassemble_function(start_address) : 関数のアセンブリコード (アドレス: 命令; コメント) を取得します。

  • get_xrefs_to(address) : 指定されたアドレスへのすべての相互参照を取得します。

  • get_xrefs_to_field(struct_name, field_name) : 名前付き構造体フィールド (メンバー) へのすべての相互参照を取得します。

  • get_entry_points() : データベース内のすべてのエントリポイントを取得します。

  • set_comment(address, comment) : 関数の逆アセンブリと疑似コード内の指定されたアドレスにコメントを設定します。

  • rename_local_variable(function_address, old_name, new_name) : 関数内のローカル変数の名前を変更します。

  • rename_global_variable(old_name, new_name) : グローバル変数の名前を変更します。

  • set_global_variable_type(variable_name, new_type) : グローバル変数の型を設定します。

  • rename_function(function_address, new_name) : 関数の名前を変更します。

  • set_function_prototype(function_address, prototype) : 関数のプロトタイプを設定します。

  • declare_c_type(c_declaration) : C 宣言からローカル型を作成または更新します。

  • set_local_variable_type(function_address, variable_name, new_type) : ローカル変数の型を設定します。

安全でない関数 ( --unsafeフラグが必要):

  • dbg_get_call_stack() : 現在の呼び出しスタックを取得します。

  • dbg_get_registers() : すべてのレジスタとその値を取得します。この関数はデバッグ時のみ使用できます。

  • dbg_run_to(address) : 指定されたアドレスまでデバッガーを実行します。

  • dbg_exit_process() : デバッガーを終了します。

  • dbg_continue_process() : デバッガーを続行します。

  • dbg_enable_breakpoint(address, enable) : 指定されたアドレスのブレークポイントを有効または無効にします。

  • dbg_list_breakpoints() : プログラム内のすべてのブレークポイントを一覧表示します。

  • dbg_set_breakpoint(address) : 指定されたアドレスにブレークポイントを設定します。

  • dbg_delete_breakpoint(address) : 指定されたアドレスのブレークポイントを削除します。

  • dbg_start_process() : デバッガーを起動します。

前提条件

Related MCP server: idalib-mcp-headless

インストール

IDA Pro MCP パッケージをインストール (またはアップグレード) します。

pip install --upgrade git+https://github.com/mrexodia/ida-pro-mcp

MCP サーバーを構成し、IDA プラグインをインストールします。

ida-pro-mcp --install

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

https://github.com/user-attachments/assets/65ed3373-a187-4dd5-a807-425dca1d8ee9

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

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

あなたの仕事は、IDA Proでcrackmeを解析することです。MCPツールを使用して情報を取得できます。一般的には、以下の戦略を使用します。

  • 逆コンパイルを検査し、発見した点をコメントに追加する

  • 変数名をより分かりやすい名前に変更する

  • 必要に応じて変数と引数の型を変更します(特にポインタと配列型)

  • 関数名をよりわかりやすいものに変更する

  • さらに詳細が必要な場合は、関数を逆アセンブルし、発見した内容をコメントに追加してください。

  • 決して自分で基数を変換しないでください。必要な場合は、Convert_number MCPツールを使用してください。

  • ブルートフォースを試みず、逆アセンブリと単純なPythonスクリプトからのみソリューションを導き出してください。

  • 最後に、調査結果と実行した手順を記載したreport.mdを作成します。

  • 解決策を見つけたら、見つけたパスワードをユーザーにフィードバックするよう促します。

このプロンプトは単なる最初の実験です。出力を改善する方法を見つけた場合は、ぜひ共有してください。

LLMの精度を高めるためのヒント

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

もう一つ覚えておくべきことは、LLMは難読化されたコードではうまく機能しないということです。LLMを使って問題を解決する前に、バイナリ全体を調べて、以下の項目を(自動的に)削除してみてください。

  • 文字列の暗号化

  • インポートハッシュ

  • 制御フローの平坦化

  • コード暗号化

  • 逆コンパイル対策

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

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

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

uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse

idalibをインストールした後、ヘッドレス SSE サーバーを実行することもできます。

uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable

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

手動インストール

: このセクションは、詳細なインストール手順を必要とする LLM およびパワー ユーザー向けです。

手動 MCP サーバーのインストール (Cline/Roo コード)

MCP サーバーを自分でインストールするには、次の手順に従います。

  1. uvをグローバルにインストールします。

    • Windows: pip install uv

    • Linux/Mac: curl -LsSf https://astral.sh/uv/install.sh | sh

  2. このリポジトリをクローンします (この例ではC:\MCP\ida-pro-mcp

  3. Cline/Roo Code MCP サーバーの構成に移動します (スクリーンショットを参照)。

  4. *「インストール済み」*タブをクリックします。

  5. *「MCP サーバーの構成」*をクリックすると、 cline_mcp_settings.jsonが開きます。

  6. ida-pro-mcpサーバーを追加します。

{
 "mcpServers": {
 "github.com/mrexodia/ida-pro-mcp": {
 "command": "uv",
 "args": [
 "--directory",
 "c:\\MCP\\ida-pro-mcp",
 "run",
 "server.py",
 "--install-plugin"
 ],
 "timeout": 1800,
 "disabled": false
 }
 }
}

接続が機能するかどうかを確認するには、次のツール呼び出しを実行できます。

<use_mcp_tool>
<server_name>github.com/mrexodia/ida-pro-mcp</server_name>
<tool_name>check_connection</tool_name>
<arguments></arguments>
</use_mcp_tool>

IDAプラグインのインストール

IDA Proプラグインは、MCPサーバーの起動時に自動的にインストールされます。-- --install-pluginオプションを無効にした場合は、以下の手順に従ってください。

  1. src/ida_pro_mcp/mcp-plugin.pyをプラグイン フォルダー (Windows の場合は%appdata%\Hex-Rays\IDA Pro\plugins ) にコピーします (移動しないでください)。

  2. IDB を開き、 Edit -> Plugins -> MCPをクリックしてサーバーを起動します。

他のMCPサーバーとの比較

IDA Pro MCP サーバーはいくつか出回っていますが、私はいくつかの理由から独自のサーバーを作成しました。

  1. インストールは完全に自動化される必要があります。

  2. 他のプラグインのアーキテクチャでは、新しい機能をすぐに追加することが困難です (不要な依存関係の定型句が多すぎる)。

  3. 新しいテクノロジーを学ぶのは楽しいです!

確認したい場合は、次のリストをご覧ください (私が発見した順)。

IDA Pro MCP サーバーをここに追加するための PR を自由に開いてください。

発達

新機能の追加は、非常に簡単で合理的なプロセスです。mcp mcp-plugin.pyに新しい@jsonrpc関数を追加するだけで、追加の定型コードなしでMCPサーバーで関数を利用できるようになります。以下の動画では、2分以内(テスト時間も含む)でget_metadata関数を追加しています。

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

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

uv run mcp dev src/ida_pro_mcp/server.py

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

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

uv run ida-pro-mcp --install

mainへの直接コミットの変更ログを生成します。

git log --first-parent --no-merges 1.2.0..main "--pretty=- %s"
A
license - permissive license
C
quality
A
maintenance

Maintenance

Maintainers
4hResponse time
Release cycle
1Releases (12mo)
Commit activity
Issues opened vs closed

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrexodia/ida-pro-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server