OllyDbg MCP桥
MCP电桥 OllyDbg 1.10 它允许MCP客户端通过一个小插件和Python服务器检查并轻松控制调试器。
该项目分为两部分:
- 一个本地OllyDbg插件,在以下位置公开一个命名管道
\\.\pipe\OllyBridge110 - Python MCP服务器,将工具调用转换为管道请求和JSON响应
这个repo是源代码优先的。编译的二进制文件、缓存和特定于计算机的路径被有意排除在外。
特性
- 调试器状态、暂停元数据和当前指令帮助程序
- 寄存器、内存、堆栈和反汇编读取
- 模块、线程和断点枚举
- 软件和硬件断点帮助程序
- 基本执行控件,如暂停、继续、运行和步骤助手
- 地址查找和轻会话清理助手
仓库的规划
server.py
Python MCP服务器
start_olly_bridge.ps1
方便本地测试的启动器
test_olly_bridge.py
Python端的小烟雾测试
plugin_stub/ollydbg110_bridge.c
OllyDbg 1.10插件桥源代码
plugin_stub/OllyBridge110.def
导出插件的定义文件
建筑
- MCP客户端调用以下公开的工具
server.py. - 服务器通过以下方式发送JSON请求
\\.\pipe\OllyBridge110. - OllyDbg插件在UI/调试器端执行调试器操作。
- 插件通过管道返回JSON。
需求
- 视窗
- Python 3
- 蟒蛇
mcp包裹 - OllyDbg 1.10
- 构建插件所需的OllyDbg 1.10插件SDK头文件和导入库
构建插件
源头生活在 plugin_stub/ollydbg110_bridge.c.
构建一个 OllyBridge110.dll 使用您首选的Windows C工具链与OllyDbg 1.10 SDK进行比较。生成的DLL应复制到中配置的插件目录中 ollydbg.ini.
构建至少需要:
- 包含OllyDbg 1.10 SDK头文件,例如
Plugin.h - 导出预期的插件入口点
- 生成与OllyDbg 1.10兼容的32位DLL
该插件使用真正的OllyDbg 1.10 API,包括:
ODBG_PlugindataODBG_PlugininitODBG_PluginmenuODBG_PluginactionReadmemoryWritememoryDisasmSetcpuPlugingetvalue(...)
运行服务器
从存储库根目录:
python .\server.py --transport stdio您还可以使用助手启动器:
powershell -ExecutionPolicy Bypass -File .\start_olly_bridge.ps1 -OllyDir 'C:\Path\To\OllyDbg' -PluginDir 'C:\Path\To\OllyPlugins'默认情况下,Python端预期:
\\.\pipe\OllyBridge110您可以使用环境变量覆盖默认值:
OLLYDBG_PIPE_NAMEOLLYDBG_BRIDGE_URL
外露工具表面
目前的工具包括:
olly_statusolly_goto_addressolly_read_memoryolly_read_disasmolly_get_registersolly_get_eipolly_current_instructionolly_goto_eipolly_read_stackolly_disasm_from_stackolly_write_memoryolly_lookup_addressolly_list_breakpointsolly_list_modulesolly_list_threadsolly_set_breakpointolly_clear_breakpointolly_set_hardware_breakpointolly_clear_hardware_breakpointolly_list_hardware_breakpointsolly_set_labelolly_set_commentolly_runolly_step_intoolly_step_overolly_pauseolly_continueolly_run_to_addressolly_clear_all_breakpointsolly_prepare_session
稳定性说明
测试中最可靠的:
- 状态和暂停元数据
- 寄存器、堆栈、内存和反汇编读取
- 模块、线程和地址查找助手
- 软件断点管理
- 通过网桥跟踪硬件断点
- 暂停并清理会话准备
可靠性较低,特别是在异常目标状态或包装样本周围:
olly_run围绕创业进行报道olly_step_intoolly_step_overolly_set_labelolly_set_comment
olly_write_memory 在Python端被有意保护,并要求 confirm=True.
冒烟测试
运行:
python .\test_olly_bridge.py然后手动抽查:
statusget_eipcurrent_instructionread_memoryread_disasmlookup_addressset_breakpoint和clear_breakpoint
备注
- 此桥专门针对OllyDbg 1.10,而不是较新的调试器系列。
- 该项目对于受控检查和自动化最有用,而不是作为现代调试器的替代品。
- 如果你发布二进制文件,最好是GitHub版本或本地构建输出,而不是将其签入源代码管理。
许可证
MIT。看 LICENSE.
