donx64mcp dbg
一个强大的进程内调试工具包,允许AI代理(Claude、Codex)进行调试和检查 任何 Windows x64进程实时运行。注入一个DLL,通过一个命名管道获取40多个调试命令,并通过MCP工具对其进行控制。
专为授权安全研究、逆向工程和CTF挑战而设计。
特性
- 记忆 --读、写、分配、填充、指针链解引用
- 反汇编 --Zydis供电指令和功能拆卸
- 图案扫描 --IDA风格的带通配符的字节模式,字符串提取
- 断点 --INT3软件断点,带有点击计数、注册上下文、等待点击
- api钩子 --基于MinHook的函数挂钩,带参数+返回值记录
- 模块检查 --枚举加载的模块、导出、导入、PE部分
- 线程控制 --列表、挂起、恢复、获取/设置寄存器、调用堆栈
- 堆行走 --枚举堆和遍历分配
- 防反调试 --3层隐形引擎(18个钩子)击败常见的调试器检测
- 隐形注射 --手动映射模式(无PEB条目,PE标题已擦除)
______________________________________________________________________
快速安装
先决条件
- Windows 10/11 x64
- Visual Studio 2022 (社区、专业或企业) “用C++进行桌面开发” 工作量
- Python 3.10+ 使用pip在PATH上
一个命令安装
git clone https://github.com/d0nk3yhm/donx64mcp-dbg.git
cd donx64mcp-dbg
install.bat安装脚本将:
- 构建
mcp_debugger.dll和mcp_inject.exe来源 - 安装Python依赖项(
pywin32,mcpSDK) - 注册MCP服务器 全球范围内 与克劳德代码(写信给
~/.claude/settings.json)
安装后 dbg_* 工具可在 每 Claude代码会话——不需要每个项目的配置。
手动构建
如果您更喜欢手动构建或使用Visual Studio IDE:
:: Option A: Command-line build
build_all.bat
:: Option B: Open in Visual Studio
:: Open mcp_debugger.sln, set to Release|x64, build solution
:: Install Python deps
pip install pywin32 mcp______________________________________________________________________
使用Claude代码进行设置
自动(通过install.bat)
安装程序使用全局注册MCP服务器 claude mcp add.安装后,重新启动Claude Code和 dbg_* 工具将在任何项目中可用。
手册(CLI)
claude mcp add donx64mcp-dbg -s user -- python "C:/path/to/donx64mcp-dbg/bridge/mcp_debugger_server.py"这 -s user flag在全球范围内注册 ~/.claude/settings.json 因此,它可以在任何项目目录下工作。
手册(配置文件)
添加 %USERPROFILE%\.claude\settings.json (创建 mcpServers 如果不存在,则使用key):
{
"mcpServers": {
"donx64mcp-dbg": {
"command": "python",
"args": ["C:/path/to/donx64mcp-dbg/bridge/mcp_debugger_server.py"]
}
}
}仅针对每个项目(可选)
如果只希望调试器在特定项目中可用,请添加 .mcp.json 在项目根目录中:
{
"mcpServers": {
"donx64mcp-dbg": {
"command": "python",
"args": ["C:/path/to/donx64mcp-dbg/bridge/mcp_debugger_server.py"]
}
}
}使用Codex进行设置
添加到您的Codex MCP配置中:
{
"mcpServers": {
"donx64mcp-dbg": {
"command": "python",
"args": ["C:/path/to/donx64mcp-dbg/bridge/mcp_debugger_server.py"]
}
}
}______________________________________________________________________
运作原理
Claude / Codex
|
| MCP protocol (stdio)
v
mcp_debugger_server.py mcp_inject.exe
(Python MCP bridge) (injector)
| |
| Named Pipe | DLL injection
| \\.\pipe\mcp_dbg_
| (LoadLibrary / Manual Map)
v v
mcp_debugger.dll
(inside target process)- 你打
dbg_attach("target.exe")来自克劳德/Codex - Python桥找到进程,运行
mcp_inject.exe注入DLL - DLL在目标进程内启动一个命名管道服务器
- 这座桥连接到管道上,并将所有
dbg_*命令 - 命令在进程内执行并返回JSON结果
| 组件 | 路径 | 描述 |
|---|---|---|
mcp_debugger.dll | dll/ | 核心DLL注入目标进程 |
mcp_inject.exe | injector/ | 具有LoadLibrary+手动映射模式的CLI注入器 |
mcp_debugger_server.py | bridge/ | Python MCP桥将DLL命令作为MCP工具公开 |
______________________________________________________________________
用法
注册MCP服务器后,从Claude或Codex使用它:
1. dbg_attach("target.exe") ` |以十六进制字符串读取内存(最大1 MB)|
| `WRITE ` |将十六进制字节写入内存|
| `READPTR [depth]` |解引用指针链|
| `PROTECT ` |查询内存保护标志|
| `ALLOC ` |在目标中分配RWX内存|
| `FREE ` |释放分配的内存|
| `FILL ` |用字节填充内存区域|
### 拆卸(Zydis)
|命令|描述|
|---------|-------------|
| `DISASM [count]` |拆卸说明(默认10,最多500)|
| `DISASM_FUNC ` |拆卸整个功能,直到RET|
### 图案扫描
|命令|描述|
|---------|-------------|
| `SCAN
` |查找第一个模式匹配(IDA样式通配符)|
| `SCAN_ALL
` |查找所有匹配的图案|
| `STRINGS [minlen]` |从内存中提取ASCII字符串|
### 断点
|命令|描述|
|---------|-------------|
| `BP_SET ` |设置软件断点(INT3)|
| `BP_LIST` |列出所有断点和点击次数|
| `BP_DEL ` |删除断点|
| `BP_DEL_ALL` |删除所有断点|
| `BP_CTX ` |从上次点击中获取注册上下文|
| `BP_WAIT [timeout_ms]` |阻塞直到到达断点|
### 模块检查
|命令|描述|
|---------|-------------|
| `MODULES` |列出所有已加载的模块及其基础/大小|
| `EXPORTS ` |列出模块的导出|
| `IMPORTS ` |列出模块的导入|
| `SECTIONS ` |列出模块的PE部分|
### API钩挂(MinHook)
|命令|描述|
|---------|-------------|
| `HOOK [name]` |挂接函数并记录调用|
| `UNHOOK ` |取下挂钩|
| `HOOK_LIST` |列出活动挂钩|
| `HOOK_LOG [count]` |查看钩子调用日志|
### 线程控制
|命令|描述|
|---------|-------------|
| `THREADS` |列出所有线程|
| `THREAD_CTX ` |获取一个线程的所有寄存器|
| `THREAD_SET ` |设置寄存器值|
| `THREAD_SUSPEND ` |暂停线程|
| `THREAD_RESUME ` |恢复挂起的线程|
| `CALLSTACK ` |获取调用堆栈|
### 堆检查
|命令|描述|
|---------|-------------|
| `HEAPS` |列出所有进程堆|
| `HEAP_WALK ` |步行堆入口|
### 隐形/反调试
|命令|描述|
|---------|-------------|
| `STEALTH_ON ` |激活隐身(1=基本,2=满,3=最大)|
| `STEALTH_OFF` |停用所有隐形保护|
| `STEALTH_STATUS` |显示当前隐形状态和钩数|
| `STEALTH_PATCH_PEB` |手动修补PEB调试标志|
______________________________________________________________________
## 反调试引擎
三层保护旁路 `STEALTH_ON `:
**第1级(基础):** PEB修补(BeingDebugged、NtGlobalFlag、堆标志)、ETW禁用、挂钩打开 `IsDebuggerPresent`, `CheckRemoteDebuggerPresent`, `NtQueryInformationProcess`, `NtClose`.
**第2级(完整,包括第1级):** 调试寄存器清理(`NtGetContextThread`, `NtSetContextThread`, `NtContinue`),定时挂钩(`QueryPerformanceCounter`, `GetTickCount`, `GetTickCount64`),线钩(`NtSetInformationThread`, `NtCreateThreadEx`),窗口/进程过滤(`FindWindowA/W`, `EnumWindows`),ntdll挂钩(`NtQueryObject`, `NtQuerySystemInformation`).
**第3级(最多,包括第2级):** 仪器回调终止(`NtSetInformationProcess` 40级区块)。
最高水平时的总钩数: **18**.
______________________________________________________________________
## 源布局
donx64mcp-dbg/ ├── dll/ # DLL source code │ ├── mcp_debugger.cpp # Entry point, pipe server │ ├── commands.cpp/h # Command dispatcher │ ├── memory_ops.cpp/h # Memory read/write/alloc │ ├── breakpoints.cpp/h # INT3 breakpoints + VEH │ ├── disasm.cpp/h # Zydis disassembly │ ├── threads.cpp/h # Thread enumeration/control │ ├── modules.cpp/h # Module/export/import/section info │ ├── hooks.cpp/h # MinHook API hooking │ ├── scanner.cpp/h # Pattern scanning + strings │ ├── heap.cpp/h # Heap walking │ ├── anti_debug.cpp/h # Anti-anti-debug engine │ ├── globals.h # Global state │ ├── response.h # JSON response helpers │ ├── lib/minhook/ # MinHook (vendored) │ └── lib/zydis/ # Zydis disassembler (vendored) ├── injector/ # Injector source │ └── mcp_inject.cpp # LoadLibrary + manual map injector ├── bridge/ # Python MCP bridge │ └── mcp_debugger_server.py # MCP server (all dbg_* tools) ├── scripts/ # Utility scripts │ └── quick_test.py # Pipe connectivity test ├── build_all.bat # Build DLL + injector ├── install.bat # Build + install + register ├── mcp_debugger.sln # Visual Studio solution └── .mcp.json # MCP server config (project-local)
______________________________________________________________________
## 命名管道协议
注入后,DLL在以下位置创建一个命名管道 `\\.\pipe\mcp_dbg_
`.
- **格式:** 发送UTF-8命令字符串,接收JSON响应
- **模式:** 消息模式管道
- **缓冲器:** 64 KB
______________________________________________________________________
## 手动地图技术细节
手动映射器(`--mm` flag)执行隐形注射:
1. 从磁盘读取PE并验证(x64 DLL检查)
1. 在目标中分配内存(首选原始ImageBase)
1. 具有正确RVA偏移的地图剖面
1. 进程库重定位(IMAGE_REL_BASED_DIR64)
1. 预加载非系统依赖项(例如。 `dbghelp.dll`)通过LoadLibrary
1. 使用远程基础增量解决导入问题
1. 写入映射图像并设置每段内存保护
1. 呼叫已导出 `ManualMapInit` 通过 `CreateRemoteThread`
1. 擦除PE标头(前0x1000字节为零)
DLL使用静态CRT(`/MT`). `ManualMapInit` 电话 `_CRT_INIT()` 在启动管道服务器之前引导C运行时,因为 `_DllMainCRTStartup` 无法从手动映射的上下文调用。
______________________________________________________________________
## 许可证
[麻省理工学院](LICENSE)
## 作者
2026年3月