AgentSmithers/x64DbgMCPServer

x64DbgMCPServer made from c# with Claude, Windsurf and Cursor support

これは何か

X64Dbg MCP Server は、Windows専用デバッガ x64dbg / x96 / x32dbg 用のC#プラグインです。LLMベースのツール(Claude、Geminiなど)で使用されるシンプルなテキスト/JSON-over-HTTPインターフェースである Model Context Protocol (MCP) を話す、小さな内蔵HTTPサーバーを実行します。サーバーは受信したMCPコマンドをx64dbg API呼び出しに変換し、AIクライアントがメモリ、レジスタ、逆アセンブルコード、コメント/ラベルの設定、スレッドの制御などを、ユーザーが手動でデバッガコマンドを入力することなく検査できるようにします。

なぜ重要なのか

リバースエンジニアリングとバイナリ解析は、伝統的に非常に手動的です。MCPを介してデバッガを公開することで、大規模言語モデルに解析を駆動させることができます。モデルはデバッガにモジュールのダンプ、ブレークポイントの設定、関数のラベル付けを要求し、返されたJSONを使用して次のステップを決定できます。これにより、AI支援のリバースエンジニアリングワークフローの構築、反復タスクの自動化、デバッガをより大きなセキュリティ自動化パイプラインに統合することが可能になります。

仕組み(高レベル)

  1. プラグインのロード – コンパイルされたDLL(x64DbgMCPServer.dp64)は、x64dbgの plugins フォルダに配置されます。ユーザーがプラグインメニューから Start MCP Server を選択すると、プラグインがロードされます。
  2. 自己ホスト型HTTPリスナー – 軽量な HttpListener(ASP.NET Coreは不要)が http://*:50300/sse(または message)にバインドされます。MCPリクエスト(コマンド名とパラメータを含む単純なHTTP POST)を受信します。
  3. コマンドディスパッチ – コード内のメソッドは [Command] 属性でマークされます。リスナーはこれらのメソッドをリフレクションで検査し、受信したコマンド名を照合し、パラメータを解析し、対応するx64dbg API呼び出し(例:メモリの読み取り、レジスタの取得)を実行し、結果をJSONまたはプレーンテキストで返します。
  4. AIクライアント側 – 外部MCPクライアント(例:提供された mcp-csharp-sdk-client またはClaudeの MCPProxy STDIO-to-SSE ブリッジ)がサーバーにプロンプトを送信します。サーバーの応答はLLMにフィードバックされ、モデルが次のデバッガアクションを決定するループが可能になります。

誰が使うか

  • セキュリティ研究者 – AI駆動のリバースエンジニアリングスクリプトをプロトタイプしたい人。
  • レッドチーム/ブルーチームエンジニア – 反復的なデバッグタスク(例:スピードハックチェックの特定、モジュールリストの抽出)を自動化したい人。
  • ツールビルダー – 完全なRPCレイヤーを書かずに、LLMとネイティブデバッガの間のプログラム的なブリッジが必要な人。

クイックスタート(簡単な手順)

  1. 前提条件 – Visual Studio Build Tools 2019+、.NET Framework 4.7.2、および DllExport ユーティリティ。
  2. ビルド – リポジトリをクローンし、DllExport.bat を実行してネイティブエクスポートを有効にし、.sln を開いてビルドします。出力DLLを *.dp64 にリネームします。
  3. インストール – ビルドしたプラグインを x64dbg\release\x64\plugins\x64DbgMCPServer にコピーします。
  4. 実行 – x64dbgを起動し、Plugins → Start MCP Server を開きます。
  5. HTTP権限を付与(管理者として実行していない場合):
    netsh http add urlacl url=http://+:50300/sse/ user=Everyone
    
  6. クライアントを接続 – 提供されたC#サンプルクライアントまたはClaudeのMCPProxyブリッジを使用し、http://127.0.0.1:50300/sse を指します。
  7. コマンドを発行 – ReadMemAtAddress、GetAllRegisters などのJSONコマンドを送信します。サーバーはLLM消費に適したJSONを返します。

制限と未完了の作業

  • すべてのデバッガコマンドがまだラップされているわけではありません。著者は完全なスタック/スレッド/モジュールダンプを追加中です。
  • デフォルトのリスナーはすべてのインターフェースにバインドされ、管理者権限が必要です。将来のバージョンではlocalhostのみにバインドすることを目指しています。
  • 一部のコマンド(例:ExecuteDebuggerCommand)は、実際の成功に関係なく現在常に true を返します。
  • .NET Frameworkとx64dbgのネイティブプラグインモデルに依存しているため、Windowsのみがサポートされています。

上記のすべての情報は、リポジトリのREADMEから直接取得されています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト