pwndbg-mcp
模型上下文协议 允许AI代理完全访问GDB/pwndbg调试和pwntools开发工具的服务器。96个工具,涵盖实时调试、堆分析和离线二进制分析。
它做什么
- 现场调试 --加载二进制文件、设置断点、遍历代码、检查寄存器/内存/堆栈
- pwndbg集成 --上下文显示、望远镜、vmmap、堆可视化、ROP小工具、漏洞利用助手
- 进程I/O --通过PTY向调试进程stdin/stdout发送/接收数据
- pwntools离线 --打包、循环模式、ELF分析、ROP链构建、壳码生成、格式字符串有效载荷
需求
快速开始
git clone https://github.com/echo8134/pwndbg-mcp.git && cd pwndbg-mcp
uv run pwndbg-mcp install
这将安装依赖关系并在中注册服务器 ~/.claude.json.重新启动Claude Code以获取它。
命令行界面
pwndbg-mcp # run the MCP server (default)
pwndbg-mcp install # uv sync + register in ~/.claude.json
pwndbg-mcp uninstall # unregister from ~/.claude.json
pwndbg-mcp config # show registration status and JSON config
pwndbg-mcp run # run the MCP server (explicit)
pwndbg-mcp path # add pwndbg-mcp to shell PATH (zsh/bash/fish)
配置
| 环境变量 | 默认值 | 描述 |
|---|
PWNDBG_MCP_GDB_PATH | gdb | GDB二进制文件的路径(已加载pwndbg) |
工具(96)
GDB核心(33)
| 工具 | 说明 |
|---|
load_binary | 将ELF二进制文件加载到GDB中进行调试 |
attach_process | 通过PID将GDB附加到正在运行的进程 |
detach_process | 将GDB从当前进程中分离出来 |
remote_connect | 连接到远程GDB服务器(gdbserver) |
remote_disconnect | 断开与远程GDB目标的连接 |
run_program | 从头开始运行加载的程序 |
continue_execution | 继续执行程序,直到下一个断点或退出 |
step_into | 进入下一个源代码行(输入函数调用) |
step_over | 跳过下一个源代码行(跳过函数调用) |
step_instruction | 第一步机器指令(输入呼叫) |
next_instruction | 第一步机器指令(跳过调用) |
finish_function | 执行,直到当前函数返回 |
interrupt_execution | 中断正在运行的程序(如GDB中的Ctrl-C) |
kill_program | 终止正在运行的程序 |
set_breakpoint | 在指定位置设置断点 |
delete_breakpoint | 按断点编号删除断点 |
enable_breakpoint | 启用已禁用的断点 |
disable_breakpoint | 禁用断点而不删除它 |
list_breakpoints | 列出所有断点、观察点和捕捉点 |
set_watchpoint | 在内存表达式上设置监视点 |
read_registers | 读取CPU寄存器值 |
write_register | 将值写入CPU寄存器 |
read_memory | 读取某个地址的原始内存字节 |
write_memory | 将字节写入内存中的某个地址 |
disassemble | 在某个地址或范围内分解指令 |
evaluate_expression | 在当前上下文中计算表达式 |
backtrace | 显示调用堆栈(回溯) |
stack_locals | 在当前堆栈帧中显示局部变量 |
stack_args | 在当前堆栈帧中显示函数参数 |
select_frame | 按编号选择堆栈帧 |
list_threads | 列出调试进程中的所有线程 |
switch_thread | 切换到其他线程 |
execute_command | 执行任何原始GDB/MI或控制台命令 |
pwndbg扩展(41)
| 工具 | 说明 |
|---|
pwndbg_context | 显示pwndbg上下文显示:寄存器、反汇编、堆栈、回溯 |
telescope | 从地址递归开始的解引用指针 |
vmmap | 显示进程的虚拟内存映射 |
hexdump_memory | 地址处的十六进制转储内存 |
xinfo | 显示内存地址所属的信息 |
search_memory | 在进程内存中搜索值 |
probeleak | 探测内存中指向已知区域(堆、堆栈、libc等)的指针 |
leakfind | 查找从地址到已知区域的指针链 |
distance | 计算两个地址之间的距离 |
heap_bins | 显示所有空闲列表箱(tcache、快速、未排序、小、大) |
heap_overview | 显示堆状态的概述 |
vis_heap_chunks | 具有颜色编码边界的堆块的视觉表示 |
malloc_chunk | 检查特定的malloc块头和元数据 |
top_chunk | 显示堆的顶部(荒野)块 |
heap_arenas | 列出所有malloc竞技场 |
tcachebins | 显示tcache bin条目及其内容 |
fastbins | 显示快速垃圾箱条目及其内容 |
unsortedbin | 显示未排序的垃圾箱条目 |
smallbins | 显示小垃圾箱条目及其内容 |
largebins | 显示大箱子条目及其内容 |
find_fake_fast | 查找地址附近的假fastbin块的候选位置 |
try_free | 模拟free()对块执行的操作,检查错误 |
checksec | 显示二进制安全功能:NX、PIE、RELRO、堆栈金丝雀、FORTIFY |
got_table | 显示全局偏移表条目及其解析地址 |
plt_table | 显示程序链接表条目 |
piebase | 显示加载的二进制文件的PIE基址 |
elf_sections | 列出加载的二进制文件的所有ELF部分 |
libcinfo | 显示libc版本和路径信息 |
rop_gadgets | 在加载的二进制文件中查找ROP小工具 |
cyclic_pattern | 生成De Bruijn循环模式以查找偏移量 |
cyclic_find | 在De Bruijn循环模式中找到一个值的偏移量 |
onegadget | 在libc中查找一个小工具RCE候选者 |
canary | 显示当前堆栈金丝雀值 |
retaddr | 显示当前帧堆栈上的返回地址 |
sigreturn_frame | 生成SROP利用的sigreturn帧 |
dumpargs | 根据调用约定将函数参数转储到当前位置 |
patch_instruction | 在给定地址处修补内存中的指令 |
nearpc | 显示带有上下文的地址周围的反汇编 |
emulate | 在不实际运行指令的情况下模拟指令的执行 |
pwndbg_status | 返回当前GDB状态并清除所有挂起的消息 |
pwndbg_hard_reset | 完全终止并重新启动GDB进程 |
进程I/O(4)
| 工具 | 说明 |
|---|
send_to_process | 将字符串发送到调试进程的stdin |
eval_to_send | 计算Python/pwntools表达式,并将结果以字节形式发送给进程 |
read_from_process | 从调试进程的stdout读取输出 |
interrupt_process | 通过终端向调试进程发送控制信号 |
pwntools实用程序(18)
不需要运行GDB会话的离线帮助程序。
| 工具 | 说明 |
|---|
pack | 将整数打包成字节 |
unpack | 将十六进制字符串解压缩为整数 |
pwn_cyclic | 生成用于缓冲区溢出偏移查找的De Bruijn循环模式 |
pwn_cyclic_find | 在De Bruijn循环模式中找到一个值的偏移量 |
elf_info | 获取基本ELF信息:架构、位、字节序和安全校验秒结果 |
elf_symbols | 列出ELF二进制文件中定义的符号 |
elf_got | 显示ELF二进制文件的全局偏移表(GOT)条目 |
elf_plt | 显示ELF二进制文件的过程链接表(PLT)条目 |
elf_search | 在ELF二进制文件中搜索字节字符串 |
rop_find_gadgets | 在ELF二进制文件中查找ROP小工具 |
rop_build_chain | 从JSON规范构建ROP链 |
shellcraft_generate | 从pwntools shellcraft模板生成shellcode汇编源代码 |
asm_encode | 将指令汇编成机器代码字节 |
asm_decode | 将机器代码字节分解为汇编指令 |
fmtstr_payload | 生成利用有效载荷的格式字符串 |
hex_encode | 将字符串编码为十六进制表示形式 |
hex_decode | 将十六进制字符串解码回文本或字节表示 |
xor_data | 将十六进制数据字符串与十六进制密钥字符串进行XOR运算 |
建筑
src/
server.py MCP server entry point, GDB controller lifecycle
gdb_controller.py Async GDB/MI protocol handler with PTY for process I/O
tools_gdb.py GDB core tools (33)
tools_pwndbg.py pwndbg extension tools (41)
tools_pwntools.py Offline pwntools utilities (18)
tools_process.py Process stdin/stdout tools (4)
utils.py ANSI stripping, response formatting
cli.py CLI: install/uninstall/config/run/path