x64dbg MCP服务器(引导)
用于构建x64dbg集成的最小MCP服务器脚手架。这使用了 MCP SDK通过stdio提供存根 x64dbg_status 工具。
快速开始
npm install
npm run dev设置
请参阅中的完整设置指南 SETUP.md.
MCP客户端配置示例
常见MCP客户端的stdio配置示例如下 MCP_CLIENT_CONFIG.md.
Winge/KD MCP服务器
Winge/KD MCP服务器现在位于一个单独的项目中(windbg-mcp).看 该仓库用于设置和使用。
工具
ping:基本服务器健康检查。x64dbg_status:返回当前存根状态和客户端配置。x64dbg_metrics:返回网桥连接和延迟度量。x64dbg_subscribe_events:配置要流式传输的调试事件。x64dbg_poll_events:获取排队的调试事件。x64dbg_command:执行任意x64dbg命令。x64dbg_eval:计算x64dbg表达式。x64dbg_disasm:在某个地址处分解指令。x64dbg_cfg:构建轻量级控制流图。x64dbg_xrefs:列出地址的交叉引用。x64dbg_xref_graph:构建一个以地址为根的外部参照图。x64dbg_search_memory:在内存中搜索字节模式。x64dbg_memory_map:返回当前内存映射。x64dbg_call_stack:潜在返回地址的堆栈快照。x64dbg_log_tail:跟踪网桥日志缓冲区。x64dbg_log_write:将消息写入x64dbg GUI日志。- 其他工具包括连接/分离/暂停/步进、内存读/写、模块、,
线程、寄存器和断点。
注: x64dbg_call_stack 返回潜在回报的堆栈快照 地址(x64dbgpy不直接公开GUI调用堆栈视图)。
使用示例
调用命令并eval:
{ "name": "x64dbg_command", "arguments": { "command": "log \"hello\"" } }{ "name": "x64dbg_command", "arguments": { "command": "r", "captureOutput": true } }{ "name": "x64dbg_eval", "arguments": { "expression": "1+2" } }订阅活动,然后投票:
{ "name": "x64dbg_subscribe_events", "arguments": { "events": ["breakpoint", "stop_debug"] } }{ "name": "x64dbg_poll_events", "arguments": { "max": 10 } }分解和查询外部参照:
{ "name": "x64dbg_disasm", "arguments": { "address": "0x401000", "count": 8 } }{ "name": "x64dbg_xrefs", "arguments": { "address": "0x401234" } }{ "name": "x64dbg_cfg", "arguments": { "entry": "0x401000", "maxBlocks": 64 } }{ "name": "x64dbg_xref_graph", "arguments": { "address": "0x401234", "depth": 1 } }搜索内存并获取堆栈快照:
{ "name": "x64dbg_search_memory", "arguments": { "address": "0x401000", "length": 65536, "pattern": "crackme", "encoding": "ascii" } }{ "name": "x64dbg_call_stack", "arguments": { "depth": 32 } }尾桥原木:
{ "name": "x64dbg_log_tail", "arguments": { "max": 50 } }配置
配置可以来自环境变量或JSON配置文件。如果 X64DBG_CONFIG 设置后,加载该文件。否则,服务器将加载 x64dbg-mcp.config.json 如果存在,请从工作目录中删除。模板是 可用的 x64dbg-mcp.config.example.json.环境变量覆盖 文件中的值。
根据需要设置环境变量:
X64DBG_CONFIG(JSON配置文件的路径)X64DBG_TRANSPORT(none,tcp,pipe;默认值:tcp当端口>0时)X64DBG_HOST(默认值:127.0.0.1)X64DBG_PORT(默认值:0)X64DBG_PIPE(使用时的管道名称pipe)X64DBG_CONNECT_TIMEOUT_MS(默认值:2000)X64DBG_REQUEST_TIMEOUT_MS(默认值:3000)X64DBG_RETRY_COUNT(默认值:2)X64DBG_RETRY_BACKOFF_MS(默认值:200)X64DBG_RETRY_MAX_BACKOFF_MS(默认值:2000)X64DBG_ALLOW_PIDS(允许使用逗号分隔的PID)X64DBG_DENY_PIDS(用逗号分隔的PID表示拒绝)X64DBG_ALLOW_NAMES(允许使用逗号分隔的进程名称)X64DBG_DENY_NAMES(以逗号分隔的进程名称可拒绝)X64DBG_EVENTS(要订阅的事件名称以逗号分隔)X64DBG_EVENT_QUEUE_LIMIT(默认值:1000)X64DBG_MCP_NATIVE_DLL(指向本机插件DLL的路径)X64DBG_MCP_NATIVE_DISABLE(设置为1忽略本机插件)X64DBG_MCP_LOG_HISTORY_LIMIT(桥接日志缓冲区大小;默认值:500)X64DBG_MCP_MAX_DISASM(每次拒绝的最大指令数;默认值:200)X64DBG_MCP_MAX_SEARCH_BYTES(要扫描的最大字节数;默认值:16777216)X64DBG_MCP_MAX_SEARCH_RESULTS(最大搜索命中率;默认值:200)X64DBG_MCP_MAX_STACK_DEPTH(最大堆栈深度;默认值:128)X64DBG_LOG_LEVEL(debug,info,warn,error;默认值:info)X64DBG_LOG_REDACT(逗号分隔的键用于在日志中编辑)
进程名称列表是针对进程的不区分大小写的子字符串匹配 图像名称。
事件流默认为安全子集(断点、进程/线程和 模块加载事件)。使用 X64DBG_EVENTS=trace_execute 只有在需要的时候,因为 它可以是高容量的。
日志在stderr上以JSON行的形式发出,以避免干扰MCP stdio。
测试
npm test运行单元+集成测试(模拟桥)。npm run test:mcp在运行中的x64dbg网桥上运行实时烟雾测试。
安全性和权限
MCP服务器可以在连接的x64dbg实例中执行调试器命令。 如果要约束附件,请在配置或 环境。允许/拒绝检查适用于 x64dbg_attach 和 x64dbg_command 当它发出 attach 命令。x64dbg可能需要提升运行权限才能连接 受保护的进程。
x64dbg桥接器(x64dbgpy)
第一阶段使用一个在x64dbg内部运行的简单Python桥,并公开一个TCP 终点。剧本住在 bridge/x64dbgpy_bridge.py 并使用NDJSON 协议描述见 src/x64dbg/protocol.ts.
- 确保
x64dbgpy插件已安装并配置为Python 2.7。 - 在x64dbg中,运行
bridge/x64dbgpy_bridge.py通过x64dbgpy插件菜单。 - 使用以下命令启动MCP服务器:
- X64DBG_TRANSPORT=tcp - X64DBG_HOST=127.0.0.1 - X64DBG_PORT=31337
下一步
如果出现以下情况,请用本机插件或命名管道实现替换Python桥 您需要更紧密的集成或更低的延迟。
原生插件(可选)
对于GUI日志跟踪、命令输出捕获和实际调用堆栈帧,构建 中的本机插件 native/x64dbg_mcp_native 并复制构建输出 (x64dbg_mcp_native.dp64 对于x64, .dp32 对于x32)转换为x64dbg plugins 目录(例如: C:\Tools\x64dbg\release\x64\plugins\x64dbg_mcp_native.dp64,或 C:\Tools\x64dbg\release\x32\plugins\x64dbg_mcp_native.dp32 对于x32dbg)。 安装插件后重新启动x64dbg。Python桥将检测到它 自动,或设置 X64DBG_MCP_NATIVE_DLL 到完整的路径。
x64dbg_command 支持 captureOutput: true 当本机插件是 加载(仅直接模式)。
本机插件还添加了 启动MCP x64dbg下的条目 Plugins 菜单。要从该按钮启动网桥,请复制 bridge\x64dbgpy_bridge.py 放入x64dbg插件文件夹(或设置 X64DBG_MCP_BRIDGE).要显示磁铁图标,请复制 native\x64dbg_mcp_native\x64dbg_mcp_native.png 在DLL旁边(或设置 X64DBG_MCP_ICON).
加载本机插件后,MCP工具 x64dbg_gui_graph_at, x64dbg_gui_show_references,以及 x64dbg_gui_current_graph 可以打开 graph/xref窗格并读取当前显示的图形。
x32dbg支持
- 使用相同的MCP服务器;将其指向x32dbg网桥端口。
- 跑
bridge\\x32dbgpy_bridge.py来自x32dbg(或集合X64DBG_HOME到
C:\\Tools\\x64dbg\\release\\x32 在运行主桥脚本之前)。
- 确保x32dbgpy配置了32位Python 2.7(编辑
C:\\Tools\\x64dbg\\release\\x32\\x32dbg.ini 并设置 PythonHome). 如果 x64dbgpy 加载失败 python27.dll,安装可能是64位或 失踪。
- 使用以下命令构建/安装本机插件:
- scripts\\build_native_x32.ps1 - scripts\\install_native_x32.ps1 看 mcp-client.x32.example.json 用于准备复制MCP客户端条目。 你也可以从 x32dbg-mcp.config.example.json 如果你更喜欢配置 通过env变量创建文件。
打包和安装助手
scripts\\build_native.ps1构建本机DLL(需要CMake+MSVC)。scripts\\build_native_x32.ps1构建32位原生插件。scripts\\package_native.ps1创造release\\x64dbg_mcp_native.zip.scripts\\install_native.ps1将DLL复制到x64dbg-plugins文件夹中。scripts\\install_native_x32.ps1将x32插件安装到x32dbg文件夹中。scripts\\install_codex.ps1使用以下命令更新Codex MCP配置文件
x64dbg服务器条目。
使用windbg mcp
您可以通过将两个MCP服务器添加到Codex配置中来并行运行它们:
[mcp_servers.x64dbg]
command = "node"
args = ["C:\\\\path\\\\to\\\\x64MCP\\\\dist\\\\index.js"]
[mcp_servers.x64dbg.env]
X64DBG_TRANSPORT = "tcp"
X64DBG_HOST = "127.0.0.1"
X64DBG_PORT = "31337"
X64DBG_MCP_NATIVE_DLL = "C:\\\\Tools\\\\x64dbg\\\\release\\\\x64\\\\plugins\\\\x64dbg_mcp_native.dll"
[mcp_servers.windbg]
command = "node"
args = ["C:\\\\path\\\\to\\\\windbg-mcp\\\\dist\\\\index.js"]
[mcp_servers.windbg.env]
WINDBG_EXEC = "kd.exe"
WINDBG_ARGS = "-k com:port=\\\\\\\\.\\\\pipe\\\\com1,baud=115200,pipe"故障排除
- 网桥未连接:确认x64dbg正在运行,网桥脚本已加载,
和 X64DBG_HOST/X64DBG_PORT 比赛。
ImportError: No module named pluginsdk:setX64DBG_HOME转到您的x64dbg
安装root,以便网桥可以找到x64dbgpy包。
- Python版本不匹配:x64dbgpy需要Python 2.7(64位);3.x不会
负载。
- 无事件:呼叫
x64dbg_subscribe_events并投票给x64dbg_poll_events. - 实时日志:使用x64dbg日志视图(
View -> Log)或检查
bridge\x64dbgpy_bridge.log.
版本控制和发行说明
此项目遵循语义版本控制。发布说明live in CHANGELOG.md.
贡献
看 CONTRIBUTING.md 用于设置和工作流程。
安全
请私下报告安全问题。看 SECURITY.md.
许可证
MIT。看 LICENSE.
