
x64dbg-MCP Server
基于MCP的x64dbg智能逆向工程方案。
特性 • 安装 • 使用 • 工具 • 配置 • 构建 • 结构
x64dbg-MCP Server是x64dbg的原生MCP(模型上下文协议)插件,通过HTTP暴露调试器的完整功能。连接任意兼容MCP的AI助手,即可通过编程方式控制x64dbg:设置断点、单步执行代码、读取内存、转储寄存器等。
基于Zig构建——零依赖、单一二进制输出,可从任意宿主机交叉编译至x32和x64。无需.NET、无需Python、无需运行时——只需将插件放入x64dbg插件文件夹即可使用。
MCP 2024-11-05 —— 支持Streamable HTTP + SSE传输,JSON-RPC 2.0。
特性
- 71个MCP工具: 完整的调试器控制——反汇编、单步、断点、内存分配、寄存器、模块、线程、调用栈、模式扫描、字符串提取、交叉引用、符号、书签、PE分析、OEP检测、模块转储、PEB/SEH检查、跟踪等。
- 22个事件回调: 完整的调试器事件覆盖——初始化、停止、断点、异常、单步、附加/分离、DLL加载/卸载、线程等。
- 零依赖: 纯原生插件,无需运行时或框架。
- x32和x64: 单一代码库,一条命令即可构建两种架构。
- 双传输: Streamable HTTP + SSE——兼容任何MCP客户端(新版和旧版)。
- 配置对话框: 可从插件菜单更改IP/端口,保存时自动重启服务器。
- 自动启动: 当x64dbg启动时,MCP服务器自动开始运行。
- 交叉编译: 可从Linux、macOS或WSL构建Windows插件。
安装
下载最新版本或从源码构建:
- 将
dist/的内容复制到x64dbg根目录(同时部署x32和x64) - 启动x64dbg
MCP服务器会自动启动。默认端口:
- x64:
0.0.0.0:9094 - x32:
0.0.0.0:9095
使用
添加到MCP客户端配置(.mcp.json等):
Streamable HTTP(推荐):
{
"mcpServers": {
"x64dbg": {
"type": "http",
"url": "http://localhost:9094/"
}
}
}
SSE(旧版客户端):
{
"mcpServers": {
"x64dbg": {
"type": "sse",
"url": "http://localhost:9094/sse"
}
}
}
如果从WSL或远程机器连接,请使用主机的IP地址,并在配置对话框中设置绑定地址为0.0.0.0。
示例——AI辅助逆向工程会话:
您: 加载calc.exe并在入口点处下断点
AI: [调用LoadBinary、SetBreakpoint、run、WaitForPause]
已加载calc.exe,在calc.exe的0x7FF7A1234000处命中断点
您: 当前寄存器是什么?
AI: [调用GetAllRegisters]
RAX: 0x0, RCX: 0x7FF7A1234000, RDX: 0x1, ...
您: 读取当前指令指针处的64字节
AI: [调用ReadMemory]
48 83 EC 28 E8 12 34 00 00 ...
您: 单步跳过接下来的3条指令并显示堆栈
AI: [调用StepOver x3、GetCallStack]
已单步至0x7FF7A1234010,调用栈:...
工具
71个MCP工具覆盖完整的x64dbg调试工作流。
始终可用
| 工具 | 描述 |
|---|---|
GetDebugState | 当前调试器状态、PID、指令指针 |
LoadBinary | 将可执行文件加载到调试器中 |
ExecuteDebuggerCommand | 运行任意x64dbg命令 |
ListCommandsByCategory | 列出可用的MCP工具 |
SearchForStrings | 在进程内存中搜索文本 |
GetEventLog | 最近N个调试器事件(异常、断点、DLL加载) |
ClearEventLog | 清除事件日志 |
EvalExpression | 计算任意x64dbg表达式(地址、寄存器、算术) |
AttachProcess | 附加到运行中的进程(按PID) |
Echo | 返回输入 |
需要活动调试会话
| 工具 | 描述 |
|---|---|
GetCurrentAddress | 当前EIP/RIP及标签和注释 |
Disassemble | 在地址处反汇编N条指令 |
DisassembleFunction | 按边界反汇编整个函数 |
ReadMemory | 进程内存的十六进制转储 |
WaitForPause | 阻塞直到目标暂停 |
run | 恢复执行(F9) |
StepInto | 单步进入调用(F7) |
StepOver | 单步跳过调用(F8) |
StepOut | 运行直到返回(Ctrl+F9) |
PauseDebug | 暂停目标(F12) |
StopDebug | 终止调试会话 |
RestartDebug | 重启调试会话 |
SetBreakpoint | 在地址/符号处设置INT3断点 |
SetHardwareBreakpoint | 设置硬件断点(DR0-DR3,读/写/执行) |
SetConditionalBreakpoint | 设置带条件表达式和可选日志的断点 |
EnableBreakpoint | 在给定地址处启用断点 |
DisableBreakpoint | 禁用断点但不删除 |
ToggleBreakpoint | 在启用和禁用之间切换断点 |
DeleteBreakpoint | 删除断点 |
DeleteAllBreakpoints | 删除所有断点(普通、硬件、内存) |
ResetHitCount | 将断点命中计数器重置为零 |
ListBreakpoints | 列出所有活动断点 |
GetAllRegisters | 转储所有通用寄存器 |
SetRegister | 设置CPU寄存器值 |
GetCallStack | 当前线程调用栈 |
GetThreads | 列出所有线程及ID和指令指针 |
SwitchThread | 切换活动线程上下文 |
SuspendThread | 按线程ID挂起线程 |
ResumeThread | 恢复已挂起的线程 |
ListModules | 列出已加载模块及基址和大小 |
GetMemoryMap | 内存区域及地址、大小和保护属性 |
GetDumpableRegions | 列出已提交、可读的内存区域 |
AllocateMemory | 在目标进程中分配内存 |
FreeMemory | 释放目标进程中已分配的内存 |
WriteMemToAddress | 用十六进制字节修补内存 |
RestorePatches | 将所有补丁恢复为原始字节 |
Assemble | 在地址处汇编指令 |
CommentOrLabelAtAddress | 在反汇编中添加注释/标签 |
SetBookmark | 在地址处设置书签 |
DeleteBookmark | 删除书签 |
ListBookmarks | 列出所有书签 |
GetImports | 显示模块导入表 |
GetExports | 显示模块导出表 |
SearchSymbols | 搜索匹配模式的符号 |
ListSymbols | 列出模块的导出符号 |
GetPatches | 列出所有内存补丁 |
FindPattern | 使用??通配符扫描模块内存中的字节模式 |
GetStrings | 从模块内存中提取ASCII字符串 |
GetReferences | 查找对目标地址的CALL/JMP交叉引用 |
GetFunctions | 列出已分析函数及地址和标签 |
AnalyzeModule | PE结构分析:节区、入口点、镜像大小 |
DetectOEP | 检测加壳可执行文件的原始入口点 |
DumpMemory | 将内存区域保存到磁盘文件 |
DumpModule | 将整个模块转储到文件 |
RunToAddress | 运行直到命中特定地址 |
TraceInto | 单步N条指令并记录地址+反汇编 |
FollowPointer | 解引用指针链N层深度 |
WatchExpressions | 在一次调用中计算多个表达式 |
GetSEHChain | 遍历结构化异常处理链(x32) |
GetPEB | 读取进程环境块字段 |
GetArguments | 从堆栈/寄存器读取函数参数 |
配置
前往 插件 > x64dbg-MCP Server > 配置MCP服务器… 可更改绑定地址和端口。
0.0.0.0— 监听所有接口(用于WSL/远程访问)127.0.0.1— 仅本地访问
更改立即生效——保存时服务器自动重启。配置持久化到x64dbg可执行文件旁边的mcp_config.json中。
构建
需要Zig 0.16-dev或更高版本。可在Windows、WSL、Linux或macOS上构建。
zig build -Doptimize=ReleaseSafe --prefix dist
输出镜像x64dbg的文件夹结构——将dist/的内容复制到x64dbg根目录即可同时部署两种架构:
dist/
├── x32/
│ └── plugins/
│ └── x64dbg-MCP-Server.dp32
└── x64/
└── plugins/
└── x64dbg-MCP-Server.dp64
项目结构
├── build.zig # 构建配置——x32 + x64交叉编译
├── build.zig.zon # 包清单
└── src/
├── main.zig # 插件入口、菜单、回调
├── core/
│ ├── bridge.zig # x64dbg SDK绑定(运行时解析)
│ ├── config.zig # Win32配置对话框和持久化
│ └── mcp_server.zig # HTTP服务器和JSON-RPC分发
├── mcp/
│ ├── json.zig # JSON写入器和解析器辅助函数
│ └── tools.zig # MCP工具定义和处理程序
└── resources/
└── icons.zig # 嵌入式PNG图标数据
工作原理
插件在x64dbg启动时加载,在运行时从x64bridge.dll和x64dbg.dll解析调试器的API符号,然后在后台线程上启动HTTP服务器。MCP客户端通过HTTP连接并发送JSON-RPC请求以调用工具——每个工具直接映射到x64dbg SDK调用(断点、内存读取、命令执行等)。
无需轮询,无需外部进程——插件存在于x64dbg的地址空间内,可直接访问调试器API。
许可证
MIT。参见LICENSE。
由@duty1g用🖤制作