功能:初始化项目结构并添加核心功能 添加 pyproject.toml 文件以包含项目元数据和依赖项。 创建 conftest.py 文件用于测试配置。 在 test_cli.py 中实现 CLI 基础功能的烟雾测试。 在 test_mcp_re1.py 和 test_mcp_stdio.py 中添加 MCP 集成测试,用于图处理功能。 为 BinGraph 项目引入技术设计文档,概述架构和工作流程。
功能:初始化项目结构并添加核心功能
把二进制静态分析结果沉淀为可查询图谱,通过 MCP Server 让 AI 高效审计二进制。
一个 MCP Server → 覆盖全部图谱 → AI 按需 open_graph 加载
BinGraph/ ├── bingraph/ # 源码包 │ ├── builder/ # 构建器(idalib 无头采集 + 反编译缓存) │ ├── server/ # MCP 查询服务 │ ├── data/sinks.yaml # 78 条危险函数知识库 │ ├── query.py # 查询引擎(NetworkX 内存图) │ ├── db.py # SQLite 存储层 │ ├── report.py # HTML 报告生成 │ └── cli.py # CLI 入口 ├── graphs/ # 所有图谱产物(gitignore) │ ├── baby.bingraph/ │ └── re1.bingraph/ ├── tests/ # 测试 │ ├── test_cli.py # CLI 集成测试 │ └── test_mcp_stdio.py # MCP 全链路测试 ├── pyproject.toml └── README.md
需要 Python 3.12+、IDA Pro 9.0+,且 idalib 已激活:
cd E:\AIxCC\BinGraph python -m pip install -e .
激活 idalib(如果尚未):
python "E:\Program Files\IDA Professional 9.0\idalib\python\py-activate-idalib.py" -d "E:\Program Files\IDA Professional 9.0"
# 对任意二进制构建图谱,产物统一放入 graphs/ bingraph build path/to/target.exe -o graphs/target.bingraph # 省略 -o 则在二进制同目录生成 <name>.bingraph/ bingraph build path/to/target.exe # 跳过反编译只建图(快速,大型二进制适用) bingraph build target.exe --skip-decompile
bingraph inspect graphs/target.bingraph
输出:函数数、边数(含 indirect/unresolved 分类)、字符串数、危险调用点数、反编译成功率。
bingraph report graphs/target.bingraph # 输出:graphs/target.bingraph/report.html
打开 report.html 可看到总览卡片、危险调用表格、top 出度函数、字符串列表、可搜索函数表。
report.html
bingraph serve
服务通过 stdio 运行,供 Claude Code / Cursor / Cherry Studio 等 MCP 客户端调用。
Claude Code 已预配置(~/.claude.json 中的 bingraph 条目)。重启 Claude 后即可在对话中使用。
~/.claude.json
bingraph
AI 工作流示例(审计 re1.exe 的 system 调用风险):
用户: 加载 re1.exe 的图谱,分析 system 调用链 AI → open_graph("E:\AIxCC\BinGraph\graphs\re1.bingraph") AI → list_dangerous_calls(category="exec") # 找出所有 exec 类危险 AI → find_call_paths(source="_main", sink="system") # 查 _main→system 路径 AI → get_pseudocode("_main", max_lines=30) # 看 _main 源代码 AI → get_subgraph_summary("_main") # _main 的邻域关系
典型分析模式:
list_dangerous_calls
find_call_paths
get_pseudocode
get_strings
callers
callees
get_subgraph_summary
search_functions
不用改配置、不用重启,同一 session 内随时切:
AI → open_graph("E:\AIxCC\BinGraph\graphs\project_a.bingraph") ... 分析 project_a ... AI → close_graph() AI → open_graph("E:\AIxCC\BinGraph\graphs\project_b.bingraph") ... 分析 project_b ...
open_graph(graph_dir)
close_graph
graph_overview
search_functions(pattern, kind)
name
string
get_function(func)
callers(func, depth)
callees(func, depth)
find_call_paths(source, sink)
list_dangerous_calls(category, severity)
get_subgraph_summary(func, depth)
get_strings(func)
get_pseudocode(func, max_lines)
target.bingraph/ ├── graph.db # SQLite:functions / call_edges / strings / imports / sinks / danger_call_sites ├── pseudocode/ # 反编译缓存 {ea:x}.c ├── meta.json # 构建元信息 + 统计 ├── build_summary.json └── report.html # 人类可读报告
内置 78 条来自 Microsoft SDL banned.h + CWE 分类的 sink,包含 7 个类别:
buffer_copy
format_string
input_source
exec
injection
network
persistence
BinGraph 负责”找对地方”,ida-pro-mcp 负责”动手改”。
二者共存不冲突,地址 ea 统一,可无缝衔接。
ea
decompile_ok=0
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
BinGraph — 二进制逆向图谱智能体平台
把二进制静态分析结果沉淀为可查询图谱,通过 MCP Server 让 AI 高效审计二进制。
项目结构
安装
需要 Python 3.12+、IDA Pro 9.0+,且 idalib 已激活:
激活 idalib(如果尚未):
使用教程
1. 构建图谱
2. 查看统计
输出:函数数、边数(含 indirect/unresolved 分类)、字符串数、危险调用点数、反编译成功率。
3. 生成 HTML 报告
打开
report.html可看到总览卡片、危险调用表格、top 出度函数、字符串列表、可搜索函数表。4. 启动 MCP 服务(接入 AI)
服务通过 stdio 运行,供 Claude Code / Cursor / Cherry Studio 等 MCP 客户端调用。
Claude Code 已预配置(
~/.claude.json中的bingraph条目)。重启 Claude 后即可在对话中使用。5. 在 AI 对话中使用
AI 工作流示例(审计 re1.exe 的 system 调用风险):
典型分析模式:
list_dangerous_callsfind_call_pathsget_pseudocode+get_stringscallers/calleesget_subgraph_summarysearch_functions6. 多图谱切换
不用改配置、不用重启,同一 session 内随时切:
MCP 工具参考
open_graph(graph_dir)close_graphgraph_overviewsearch_functions(pattern, kind)name)或字符串内容(string)搜索get_function(func)callers(func, depth)callees(func, depth)find_call_paths(source, sink)list_dangerous_calls(category, severity)get_subgraph_summary(func, depth)get_strings(func)get_pseudocode(func, max_lines)图谱目录结构
危险函数知识库
内置 78 条来自 Microsoft SDL banned.h + CWE 分类的 sink,包含 7 个类别:
buffer_copyformat_stringinput_sourceexecinjectionnetworkpersistence与活 IDA 互补
BinGraph 负责”找对地方”,ida-pro-mcp 负责”动手改”。
二者共存不冲突,地址
ea统一,可无缝衔接。已知限制
decompile_ok=0并如实返回bingraph serve后需重启 Claude 客户端才能看到新 MCP 工具