MCP 服务
Model Context Protocol (MCP) 服务允许 LLM 代理和 IDE 集成通过结构化工具接口查询分析结果、导航时间轴和触发 Pass。
./tenet trace.bin --mcp-port 13337或从 GUI 会话中使用 File → Start MCP Server。服务使用与运行中 GUI/TUI/CLI 相同的会话和 Pass 结果。
MCP 工具镜像 JSON-RPC 方法,并附加元数据和结构化参数 schema:
会话与 Trace
Section titled “会话与 Trace”trace_info— Trace 元数据、格式版本、模块信息list_passes— 可用 Pass 目录及状态run_pass— 按名称运行 Pass,支持可选参数pass_result— 获取已完成 Pass 的缓存结果cancel_pass— 取消正在运行的 Pass
goto_inst— 跳转到指令 IDgoto_pc— 跳转到运行时 PCset_breakpoint/set_watchpoint— 设置 PC 或内存断点list_breakpoints— 列出活跃断点
get_registers— 指令处的 GPR 状态get_memory— 某时刻的内存区域get_hex_dump— 原始字节 dumpget_call_stack— 动态调用栈
taint_forward/taint_backward— 污点分析cfg_export— 导出 CFG 为 DOTcall_graph— 导出调用图functions/find_function— 函数查询xref— PC 的 XRef 出现strings— 已发现字符串objc_messages— ObjC 消息分析loops— 循环信息algorithm_summary— 算法候选pattern_results— 模式扫描结果entropy_analysis— 熵测量mem_search— 内存值/模式搜索vm_abstract— VM handler 分析
rebase_addr— 使用 Trace 的module_slide在运行时地址与静态地址间转换。携带地址到/从 IDA 或 Ghidra 时使用此工具,而非手工算术。
与 IDA 集成
Section titled “与 IDA 集成”Tenet 的 MCP 服务设计为与 IDA 自身的 MCP hub 协同工作。典型流程:
- 在 Tenet 中用
--mcp-port打开 Trace。 - 在 IDA 中打开同一二进制文件及其 MCP 服务。
- 使用同时连接两个服务的 MCP 客户端(或 IDE 集成)。
- 用 IDA 获得的地址在 Tenet 中查询动态证据(污点、值、调用栈)。
- 使用
rebase_addr在运行时(Tenet)和静态(IDA)地址间翻译。
- MCP 服务要求有活跃的 Tenet 进程和已打开的 Trace。
- 共享相同的会话锁:同一 Trace 同时只能被一个进程拥有。
- 长时间 Pass 返回进度通知;客户端必须处理这些通知。
- 部分高级参数未通过 MCP 暴露;精细控制请使用 JSON-RPC 或 CLI。