ida域mcp
构建在IDA Pro之上的无头模型上下文协议(MCP)服务器 ida-domain 和 ida-pro-mcp它允许AI代理(或任何MCP客户端)按需打开和分析IDA数据库,而无需手动启动IDA,并以编程方式控制常见的逆向工程工作流程。
与以GUI为中心的方法不同,ida域mcp根据需要启动每个项目工作人员的流程,并在代理的工作流程中通过mcp工具调用加载二进制文件。您不必在MCP服务器启动时预加载二进制文件,一旦配置,整个流程可以完全自动运行,无需人工干预。
示例
为什么不同
- 无头设计:不依赖IDA图形用户界面。通过以下方式使用IDA的无头跑步器
ida-domain. - 按需加载数据库:调用
open_databaseMCP工具在代理会话期间的任何时候加载二进制文件或IDB;无需手动预加载。 - 多项目隔离:每个
project_name在自己的工作进程中运行;可以同时分析多个二进制文件,而不会相互干扰。
功能(工具)
通过MCP暴露的高级工具类别:
- 项目/会议管理:
open_database,close_database - IDB/核心:
idb_meta,lookup_funcs,cursor_addr,cursor_func,list_funcs,list_globals,imports,strings,segments,local_types,int_convert - 分析和外部参照:
decompile,disasm,xrefs_to,xrefs_to_field,callees,callers,entrypoints,analyze_funcs,find_bytes,find_insns,basic_blocks,find_paths,search,find_insn_operands,export_funcs,callgraph,xref_matrix,analyze_strings - 调试器:
dbg_start,dbg_exit,dbg_continue,dbg_run_to,dbg_step_into,dbg_step_over,dbg_list_bps,dbg_add_bp,dbg_delete_bp,dbg_enable_bp,dbg_regs,dbg_regs_thread,dbg_regs_cur,dbg_gpregs_thread,dbg_current_gpregs,dbg_regs_for_thread,dbg_current_regs,dbg_callstack,dbg_read_mem,dbg_write_mem - 内存和补丁:
get_bytes,get_u8,get_u16,get_u32,get_u64,get_string,get_global_value,patch - 类型和结构:
declare_type,apply_types,infer_types,structs,struct_info,read_struct,search_structs,stack_frame,declare_stack,delete_stack - python
py_eval
这里的大多数MCP工具都是上游ida_pro_MCP模块(核心/分析/调试/内存/修改/堆栈/类型/python)的精简包装器,并在功能、参数和返回格式上保持同步。然而,项目/会话管理工具(open_database, close_database)在本地实现每个项目的流程编排。请参阅来源 ida_domain_mcp/src/ida_domain_mcp/main.py 和 ida_domain_mcp/src/ida_domain_mcp/ida_tools.py 对于绑定,以及 ida pro-mcp/src/ida_pro_mcp/ida_mcp 用于上游实施。
需求
- Python:3.12+
- IDA:安装了IDA Pro 9.1.0或更高版本。
- uv推荐用于Python包和项目管理。看 紫外线文件 有关安装说明。
环境变量
根据配置可执行路径 ida-domain的文档.
export IDADIR="[IDA Installation Directory]"无头可执行文件(idat/idat64)必须在指定的IDA安装目录中可用。
安装
在运行MCP服务器之前,请确保按照上述说明设置环境变量。
与一起跑步 uvx
无需安装任何东西即可运行MCP服务器的最简单方法是通过 uvx:
uvx ida-domain-mcp --transport http://127.0.0.1:8744从PyPI安装
您可以从PyPI将该包作为项目的依赖项安装:
# With uv
uv init
uv add ida-domain-mcp
# Or with pip
pip install ida-domain-mcp运行MCP服务器
服务器入口点支持两种传输模式 ida-domain-mcp:
- stdio(默认,用于直接MCP客户端集成)
uv run ida-domain-mcp --transport stdio- SSE或流式HTTP(适用于MCP检查器和远程客户端)
# sse at http://127.0.0.1:8744/sse
uv run ida-domain-mcp --transport http://127.0.0.1:8744
# streamable http at http://127.0.0.1:8744/mcp
uv run ida-domain-mcp --transport http://127.0.0.1:8744 --streamable-http然后,您可以连接MCP检查器进行快速探索:
npx @modelcontextprotocol/inspector
# Point it to: http://127.0.0.1:8744/sse (SSE) or http://127.0.0.1:8744/mcp (Streamable HTTP)测试
克隆存储库并安装依赖项:
git clone https://github.com/xxyyue/ida_domain_mcp
cd ida_domain_mcp
uv sync提供了一个简单的双数据库测试:
# Start the server first (SSE mode)
uv run ida-domain-mcp --transport http://127.0.0.1:8744
# In another shell, run the test client
uv run tests/test_ida_mcp.py http://127.0.0.1:8744/sse
# Or, run the test agent
echo "OPENAI_API_KEY=sk-..." > .env
uv run tests/agent.py