mcpField
I
IDA Pro MCP Server

IDA Pro MCP Server

ローカル
github.com/fdrechslerセキュリティ10383 週間前に更新

IDA Pro MCP Server について

IDA Pro MCP Server は、AI アシスタントが MCP を通じて IDA Pro を操作し、リバースエンジニアリングとバイナリ解析を行えるようにするプロジェクトです。HTTP API を持つ IDA プラグイン、TypeScript クライアント、MCP サーバーの3つで構成されています。バイナリの調査を自動化したいセキュリティ研究者に向いています。

主な機能

  1. 01IDA Pro 内での Python スクリプト実行
  2. 02文字列、インポート、エクスポート、関数の一覧取得
  3. 03即値、テキスト、バイト列の検索
  4. 04アドレス範囲の逆アセンブル結果の取得
  5. 05プラグインのデフォルトのローカルホスト限定待ち受け

活用シーン

  1. 01AI アシスタントによるバイナリサンプルの解析支援
  2. 02バイナリ内の文字列やバイトパターンの検索
  3. 03スクリプトによる IDA Pro の解析手順の自動化

MCP 対応

MCP サーバーは run_ida_command や get_functions などのツールとして IDA Pro の機能を提供し、MCP クライアントから呼び出せるようにします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

IDA Pro MCP サーバー

AI アシスタントがリバースエンジニアリングやバイナリ解析のタスクで IDA Pro を操作できるようにする、Model Context Protocol(MCP)サーバーです。

IDA Pro Server MCP server

概要

このプロジェクトは、リバースエンジニアリングに使用される人気の逆アセンブラーおよびデバッガーである IDA Pro と、AI アシスタントをつなぐブリッジを提供します。主に次の3つのコンポーネントで構成されています。

  1. IDA Pro リモート制御プラグイン(ida_remote_server.py):IDA Pro の関数をリモートで制御するための HTTP サーバーを作成する IDA Pro プラグインです。
  2. IDA リモートクライアント(idaremoteclient.ts):IDA Pro リモート制御サーバーとやり取りするための TypeScript クライアントです。
  3. MCP サーバー(index.ts):IDA Pro の機能を AI アシスタントに公開する Model Context Protocol サーバーです。

機能

  • AI アシスタントから IDA Pro で Python スクリプトを実行
  • バイナリに関する情報を取得:
    • 文字列
    • インポート
    • エクスポート
    • 関数
  • 高度なバイナリ解析機能:
    • 命令内の即値を検索
    • バイナリ内のテキスト文字列を検索
    • 特定のバイト列を検索
    • アドレス範囲の逆アセンブル結果を取得
  • 標準化されたインターフェースを通じて IDA Pro の操作を自動化
  • コンポーネント間の安全な通信

前提条件

  • IDA Pro 8.3 以降
  • Node.js 18 以降
  • TypeScript
ida_remote_server.py の使用例
curl -X POST -H "Content-Type: application/json" -d '{"script":"print(\"Script initialization...\")"}' http://127.0.0.1:9045/api/execute
{"success": true, "output": "Script initialization...\n"}
MCP サーバーの使用例

Roo Output

インストール

1. IDA Pro リモート制御プラグインをインストールする
  1. ida_remote_server.py を IDA Pro のプラグインディレクトリにコピーします:

    • Windows:%PROGRAMFILES%\IDA Pro\plugins
    • macOS:/Applications/IDA Pro.app/Contents/MacOS/plugins
    • Linux:/opt/idapro/plugins
  2. IDA Pro を起動し、バイナリファイルを開きます。

  3. プラグインによって、127.0.0.1:9045 で HTTP サーバーが自動的に起動します。

2. MCP サーバーをインストールする
  1. このリポジトリをクローンします:

    git clone <repository-url>
    cd ida-server
    
  2. 依存関係をインストールします:

    npm install
    
  3. プロジェクトをビルドします:

    npm run build
    
  4. AI アシスタントの MCP 設定ファイルで MCP サーバーを設定します:

    {
      "mcpServers": {
        "ida-pro": {
          "command": "node",
          "args": ["path/to/ida-server/dist/index.js"],
          "env": {}
        }
      }
    }
    

使用方法

インストールと設定が完了すると、MCP サーバーは AI アシスタントに次のツールを提供します:

run_ida_command

IDA Pro の Python スクリプトを実行します。

パラメーター:

  • scriptPath(必須):実行するスクリプトファイルの絶対パス
  • outputPath(任意):スクリプトの出力を保存する絶対パス

例:

# Example IDA Pro script (save as /path/to/script.py)
import idautils

# Count functions
function_count = len(list(idautils.Functions()))
print(f"Binary has {function_count} functions")

# Get the first 5 function names
functions = list(idautils.Functions())[:5]
for func_ea in functions:
    print(f"Function: {ida_name.get_ea_name(func_ea)} at {hex(func_ea)}")

# Return data
return_value = function_count

AI アシスタントは、次のようにこのスクリプトを使用できます:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>run_ida_command</tool_name>
<arguments>
{
  "scriptPath": "/path/to/script.py"
}
</arguments>
</use_mcp_tool>
search_immediate_value

バイナリの命令内にある即値を検索します。

パラメーター:

  • value(必須):検索する値(数値または文字列)
  • radix(任意):数値変換の基数(デフォルト:16)
  • startAddress(任意):検索の開始アドレス
  • endAddress(任意):検索の終了アドレス

例:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_immediate_value</tool_name>
<arguments>
{
  "value": "42",
  "radix": 10
}
</arguments>
</use_mcp_tool>
search_text

バイナリ内のテキスト文字列を検索します。

パラメーター:

  • text(必須):検索するテキスト
  • caseSensitive(任意):大文字と小文字を区別するかどうか(デフォルト:false)
  • startAddress(任意):検索の開始アドレス
  • endAddress(任意):検索の終了アドレス

例:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_text</tool_name>
<arguments>
{
  "text": "password",
  "caseSensitive": false
}
</arguments>
</use_mcp_tool>
search_byte_sequence

バイナリ内の特定のバイト列を検索します。

パラメーター:

  • bytes(必須):検索するバイト列(例:3つの NOP を表す "90 90 90")
  • startAddress(任意):検索の開始アドレス
  • endAddress(任意):検索の終了アドレス

例:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>search_byte_sequence</tool_name>
<arguments>
{
  "bytes": "90 90 90"
}
</arguments>
</use_mcp_tool>
get_disassembly

アドレス範囲の逆アセンブル結果を取得します。

パラメーター:

  • startAddress(必須):逆アセンブルの開始アドレス
  • endAddress(任意):逆アセンブルの終了アドレス
  • count(任意):逆アセンブルする命令数

例:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_disassembly</tool_name>
<arguments>
{
  "startAddress": "0x401000",
  "count": 10
}
</arguments>
</use_mcp_tool>
get_functions

バイナリ内の関数一覧を取得します。

パラメーター:

  • 必須のパラメーターはありません

例:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_functions</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
get_exports

バイナリ内のエクスポート一覧を取得します。

パラメーター:

  • 必須のパラメーターはありません

例:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_exports</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
get_strings

バイナリ内の文字列一覧を取得します。

パラメーター:

  • 必須のパラメーターはありません

例:

<use_mcp_tool>
<server_name>ida-pro</server_name>
<tool_name>get_strings</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>

IDA Pro リモートコントロール API

IDA Pro リモートコントロールプラグインは、次の HTTP エンドポイントを公開します。

  • GET /api/info:プラグイン情報を取得します
  • GET /api/strings:バイナリ内の文字列を取得します
  • GET /api/exports:バイナリ内のエクスポートを取得します
  • GET /api/imports:バイナリ内のインポートを取得します
  • GET /api/functions:関数一覧を取得します
  • GET /api/search/immediate:命令内の即値を検索します
  • GET /api/search/text:バイナリ内のテキストを検索します
  • GET /api/search/bytes:バイト列を検索します
  • GET /api/disassembly:アドレス範囲の逆アセンブル結果を取得します
  • POST /api/execute:Python スクリプトを実行します(JSON/Form)
  • POST /api/executebypath:ファイルパスから Python スクリプトを実行します
  • POST /api/executebody:生のボディから Python スクリプトを実行します

セキュリティに関する考慮事項

デフォルトでは、セキュリティ上の理由から、IDA Pro リモートコントロールプラグインは 127.0.0.1(localhost)のみでリッスンします。これにより、IDA Pro インスタンスへのリモートアクセスを防止します。

リモートアクセスを許可する必要がある場合は、ida_remote_server.py の DEFAULT_HOST 変数を変更できますが、セキュリティへの影響に注意してください。

開発

ソースからのビルド
npm run build
テストの実行
npm test

ライセンス

このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE ファイルを参照してください。

作成者

Florian Drechsler (@fdrechsler) [email protected]

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。