此项目是一个用于构建适用于 x96/x64/x32dbg 的 MCP(内存命令协议)服务器插件的起点。该项目使用 C# 在仅限 Windows 的经典 .NET Framework 平台上进行开发(无需 ASP.NET Core 主机)。
该插件充当 MCP 客户端与调试器之间的轻量级 HTTP 接口桥接,允许您通过远程和程序化的方式让 LLM MCP 客户端交互式地发送命令以检查内存、反汇编、查询寄存器、操作标签/注释等。
除了与 x64dbg 调试引擎的基本绑定之外,此模板还提供了一个干净的项目结构、内置的命令系统以及一个简单的 HTTP 监听器,它通过基于文本的 API 暴露您的命令。
光标连接:
{
"mcpServers": {
"AgentSmithers X64Dbg MCP Server": {
"url": "http://127.0.0.1:50300/sse"
}
}
}
Claude 配置连接:
{
"mcpServers": {
"x64Dbg": {
"command": "C:\\MCPProxy-STDIO-to-SSE.exe",
"args": ["http://localhost:50300"]
}
}
}
Claude 配置连接:
{
"mcpServers": {
"AgentSmithers x64Dbg STDIO<->SSE": {
"command": "C:\\MCPProxy-STDIO-to-SSE.exe",
"args": ["http://localhost:50300"]
}
}
}
已知问题:直接使用 SSE 时出现上下文超时(超时)问题。
打开项目
编辑 Program.cs 文件中的第 590 行,并输入从 Google Cloud API 获取的 GeminiAI 密钥。
编辑 Program.cs 文件中的第 615 行,并输入您的 MCP 服务器 IP 地址:Location = "http://192.168.x.x:50300/sse",
打开您的 x96 调试器,日志应反映服务器自动加载。
若要手动与服务器交互而不是使用 AI,请取消注释第 634 行并注释掉第 635 行。
在客户端上点击开始调试,AI 应自动执行位于第 434 行(Program.cs)的提示。
访问最新的客户端样本作为与此项目集成的起点:https://github.com/AgentSmithers/mcp-csharp-sdk-client/
https://github.com/AgentSmithers/x64DbgMCPServer/blob/master/Sample1
https://github.com/AgentSmithers/x64DbgMCPServer/blob/master/Sample2
要构建和运行此项目,您需要:
克隆或分叉项目:git clone https://github.com/AgentSmithers/x64DbgMCPServer
下载 DLlExport.bat 并将其放置在项目的根文件夹中(解决方案 [.sln] 文件所在的位置)。然后,运行 DllExport.bat。
在 DllExport GUI 中,
已安装 复选框。System.Runtime.InteropServices。x64 或 x86)。打开 .sln 解决方案文件并构建。
如果您遇到此错误,请清理并重新构建 DotNetPlugin.Stub。 <img width="998" height="155" alt="image" src="https://gips2.baidu.com/it/u=453829818,845324579&fm=3081&app=3081&f=PNG?w=998&h=155" />
📌 提示:如果看到 x64DbgMCPServer.dll 在输出文件夹中,请将其重命名为 x64DbgMCPServer.dp64,以便 x64dbg 可以加载插件。
将文件(x64DbgMCPServer\bin\x64\Debug)复制到 x64DBG 插件(x96\release\x64\plugins\x64DbgMCPServer)文件夹中以运行。
注意:如果插件文件夹不存在,请创建它,并创建一个 x64DbgMCPServer 子文件夹并将文件复制进去。
加载时的样本调试日志
启动调试器,转到插件 -> 点击“启动 MCP 服务器”
通过 SSE 在端口 50300 上使用您首选的 MCP 客户端连接到它。
一些 x64dbg 命令不会返回有意义的布尔值。使用这些辅助方法:
ExecuteDebuggerCommandWithVar: 执行命令并在之后读取调试器变量。 示例:
ExecuteDebuggerCommandWithVar command="init notepad.exe" resultVar=$pid pollMs=100 pollTimeoutMs=5000$pid 的值(例如,0x1234);非零表示已启动ExecuteDebuggerCommandWithOutput: 执行命令并捕获日志输出。 示例:
ExecuteDebuggerCommandWithOutput command="bplist"如果您在 x64dbg 日志(Alt+L)中看到“无法启动 MCP 服务器:访问被拒绝”,这是因为 Windows 需要特殊权限才能监听 HTTP URL。您有两个选项:
选项 1:以管理员身份运行(快速修复)
x64dbg.exe 并选择“以管理员身份运行”选项 2:授予 URL 权限(推荐) 在提升权限的 PowerShell/命令提示符中运行以下命令:
netsh http add urlacl url=http://+:50300/sse/ user=Everyone
netsh http add urlacl url=http://+:50300/message/ user=Everyone
运行这些命令后,您可以正常启动 x64dbg,MCP 服务器将正常工作。
*确保您运行 powershell 的 "Unblock-File " 命令以移除任何阻止下载文件的限制。
我已经验证了几个命令,它们效果很好。我特别兴奋的是使用这个系统来探索如何通过 AI 辅助逆向工程来简化安全工作流程。 一旦 MCP 服务器运行(通过 x64dbg 中的插件菜单),您可以发出如下命令:
ExecuteDebuggerCommand command=init C:\InjectGetTickCount\InjectSpeed.exe
ExecuteDebuggerCommand command="AddFavouriteCommand Log s, NameOfCmd"
ReadDismAtAddress addressStr=0x000000014000153f, byteCount=5
ReadMemAtAddress addressStr=00007FFA1AC81000, byteCount=5
WriteMemToAddress addressStr=0x000000014000153f, byteString=90 90 90 90 90 90
CommentOrLabelAtAddress addressStr=0x000000014000153f, value=Test, mode=Comment
CommentOrLabelAtAddress addressStr=0x000000014000153f, value=
GetAllRegisters
GetLabel addressStr=0x000000014000153f
GetAllActiveThreads
GetAllModulesFromMemMap
GetCallStack
这些命令返回 JSON 或文本格式化的输出,适合 AI 模型或集成脚本的摄入。示例:
DotNetPlugin.Impl 包含项目构建后命令中的以下内容。更新它以反映正确的 x64dbg 路径,以便更快地调试。 重建后,X64Dbg 将自动加载新插件,如有需要,可以重新附加到 X64Dbg 实例。
xcopy /Y /I "$(TargetDir)*.*" "C:\Users\User\Desktop\x96\release\x64\plugins\x64DbgMCPServer"
C:\Users\User\Desktop\x96\release\x64\x64dbg.exe
并非每个命令都完全实现,尽管我正在积极工作以支持完整的堆栈、线程和模块转储供 AI 查询。
MCP 服务器运行一个简单的 HTTP 监听器,并将传入的命令路由到用 [Command] 属性标记的 C# 方法。这些方法可以执行任何逻辑(例如,内存读取、反汇编、设置断点)并将数据以结构化格式返回给 MCP 客户端。
ExecuteDebuggerCommand 总是返回 true,因为它指的是评论成功执行,而不是实际命令的结果。(已实施修复,需检查。)
当前已编译版本设置为侦听所有 IP 地址上的 50300 端口,因此需要管理员权限。未来版本将检测这一点,并仅侦听 127.0.0.1,这样就可以在没有管理员权限的情况下使用。(参见“故障排除”部分)
如果 x64/x32 dbg 启动时崩溃,请确保 DLL 没有被 Windows 阻止。 这会导致 .NET Framework 因安全原因拒绝加载程序集。
⚡ 在 Adams85 的 DotNetPluginCS 的帮助下,经过大约 20 小时的专注编码和 MCP 协议审查,我们得到了一个相当不错的自包含 HTTP MCP 服务器插件的证明概念。
这个项目最令人满意的一个方面是克服了完全自包含地构建 HTTP 服务器的挑战——没有 Kestrel,没有 ASP.NET,只有原始的 HttpListener 为您的逆向工程自动化提供动力。
我计划继续改进这个代码库,作为我进入 AI 辅助分析、实现安全性和自动化工具的一部分。
如果您希望获得帮助创建自己的集成、扩展此插件或讨论潜在用途——请随时联系(参见存储库或我的个人资料中的联系方式)。我很乐意与探索这一领域的其他人合作和学习。
💻 让我们更聪明地逆向工程,而不是更艰难地逆向工程。
干杯 🎉