多实例调试服务器

x64dbg多实例MCP服务器,支持同时调试多个目标并自动分配端口,提供50+调试工具集。

  • by ddddhkim
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 ddddhkim/x64dbg-multi-mcp

使用说明

x64dbg Multi-Instance MCP

Multi-instance MCP server for x64dbg debugger.
Debug multiple targets simultaneously with automatic port assignment.

Based on Wasdubya/x64dbgMCP (original single-instance MCP server).

Features

  • 50+ x64dbg SDK Tools - Registers, memory, disassembly, breakpoints, modules, symbols, threads, labels, comments, pattern search, and more
  • Multi-Instance Support - Debug multiple targets simultaneously, each with a unique instance ID
  • Auto Port Assignment - Patched plugin automatically finds a free port when the default (8888) is in use
  • Cross-Architecture Support - Works with both x64dbg (64-bit) and x32dbg (32-bit)
  • Auto-Discovery - Running x64dbg instances are automatically detected and registered
  • Output Caching - Large responses are automatically truncated and cached for paginated retrieval

Quick Install

Option A: One-click (Windows)

Double-click install.bat

Option B: Manual

git clone https://github.com/wasdubya/x64dbgmcp
cd x64dbgmcp
pip install -e .
claude mcp add --scope user x64dbg -- python -m x64dbg_multi_mcp

Option C: Claude Desktop config (claude_desktop_config.json)

{
  "mcpServers": {
    "x64dbg": {
      "command": "python",
      "args": ["-m", "x64dbg_multi_mcp"]
    }
  }
}

Plugin Setup

  1. Copy MCPx64dbg.dp64 to [x64dbg_dir]/release/x64/plugins/
  2. Copy MCPx64dbg.dp32 to [x64dbg_dir]/release/x32/plugins/ (for 32-bit)
  3. Launch x64dbg - check logs (ALT+L) for HTTP server started at http://localhost:8888/

The patched plugin (build_msvc/build64/Release/MCPx64dbg.dp64) includes auto port assignment:

  • First instance binds to port 8888
  • Second instance automatically binds to 8889, third to 8890, etc.
  • No manual configuration needed

Multi-Instance Debugging

Claude/Cursor
    ↓ MCP (stdio)
x64dbg-multi-mcp Server (central router)
    ├── x64dbg #1 (port 8888) → instance "a1b2"  [malware.exe]
    ├── x64dbg #2 (port 8889) → instance "c3d4"  [dropper.dll]
    └── x64dbg #3 (port 8890) → instance "e5f6"  [payload.exe]

Usage

"List all x64dbg instances"           → list_instances()
"Read RAX from instance a1b2"         → RegisterGet(instance_id="a1b2", register="rax")
"Set breakpoint in instance c3d4"     → DebugSetBreakpoint(instance_id="c3d4", addr="0x1400010a0")
"Compare modules between instances"   → GetModuleList on each instance

Management Tools

Tool Description
list_instances List all active x64dbg instances with health status
refresh_tools Re-scan for new x64dbg instances
get_cached_output Retrieve truncated output with pagination

Available Tools (56)

Category Tools
Debug Control DebugRun, DebugPause, DebugStop, DebugStepIn, DebugStepOver, DebugStepOut
Registers RegisterGet, RegisterSet, GetRegisterDump
Memory MemoryRead, MemoryWrite, MemoryIsValidPtr, MemoryGetProtect, MemoryBase, GetMemoryMap, MemoryRemoteAlloc, MemoryRemoteFree
Breakpoints DebugSetBreakpoint, DebugDeleteBreakpoint, SetHardwareBreakpoint, DeleteHardwareBreakpoint, GetBreakpointList
Disassembly DisasmGetInstructionRange, StepInWithDisasm
Assembly AssemblerAssemble, AssemblerAssembleMem
Modules & Symbols GetModuleList, QuerySymbols
Threads GetThreadList, GetTebAddress
Stack StackPop, StackPush, StackPeek, GetCallStack
Flags FlagGet, FlagSet
Labels & Comments LabelSet, LabelGet, LabelList, CommentSet, CommentGet
Cross-References XrefGet, XrefCount
Pattern Search PatternFindMem
Expressions MiscParseExpression, MiscRemoteGetProcAddress
Strings StringGetAt
Branch Analysis GetBranchDestination
Patches GetPatchList, GetPatchAt
System EnumHandles, EnumTcpConnections, ExecCommand
Page Rights SetPageRights

All tools require an instance_id parameter to specify which x64dbg instance to target.

Build from Source

Requirements: CMake + MSVC (Visual Studio Build Tools)

git clone https://github.com/wasdubya/x64dbgmcp
cd x64dbgmcp
cmake -S . -B build -A x64
cmake --build build --config Release

For both 32-bit and 64-bit:

cmake --build build --target all_plugins --config Release

For 32-bit only:

cmake -S . -B build32 -A Win32 -DBUILD_BOTH_ARCHES=OFF
cmake --build build32 --config Release

Deployment / Migration

To install on a new machine:

  1. Copy the entire x64dbgMCP folder
  2. Run install.bat (requires Python 3.10+)
  3. Copy MCPx64dbg.dp64 / .dp32 to x64dbg's plugins/ directory
  4. Done - launch x64dbg and Claude/Cursor

To uninstall: run uninstall.bat

Project Structure

x64dbgMCP/
├── src/
│   ├── MCPx64dbg.cpp              # C++ plugin (HTTP server, auto-port)
│   ├── x64dbg.py                  # Legacy single-instance MCP server
│   └── x64dbg_multi_mcp/          # Multi-instance MCP package
│       ├── server.py              # Central MCP server (mcp.server.Server)
│       ├── router.py              # Routes tools to x64dbg instances via HTTP
│       ├── registry.py            # File-based instance registry
│       ├── instance_id.py         # Deterministic base36 ID generation
│       ├── health.py              # Health checks & auto-discovery
│       ├── cache.py               # Output caching for large responses
│       └── tools.py               # 56 tool schema definitions
├── tests/
│   ├── test_multi_mcp_e2e.py      # End-to-end test with mock servers
│   └── test_all_tools_live.py     # Live test against real x64dbg
├── setup.py                       # pip install support
├── install.bat                    # One-click installer
└── uninstall.bat                  # One-click uninstaller

Usage Tips

  • Provide the full path of the binary so the model can restart it if needed: init C:\Path\to\EXE
  • Use GetModuleList first so the model knows valid address ranges
  • Use list_instances to see all connected debuggers before starting analysis
  • x64dbg won't respond to addresses out of range - always verify with MemoryIsValidPtr

Example from Cursor

Enjoy Automated Multi-Instance Debugging