BinAssistMCP 是一个强大的工具,它在 Binary Ninja 和 Claude 等大语言模型(LLMs)之间架起了一座桥梁。通过模型上下文协议(MCP),它提供了全面的逆向工程工具,利用服务器发送事件(SSE)和标准输入输出(STDIO)传输方式,将 Binary Ninja 的高级功能开放出来,实现了 AI 辅助的二进制分析。
BinAssistMCP 是 Binary Ninja 和大语言模型(如 Claude)之间的强大桥梁,通过模型上下文协议(MCP)提供全面的逆向工程工具。它通过服务器发送事件(SSE)和标准输入输出(STDIO)传输方式,将 Binary Ninja 的高级功能暴露出来,实现 AI 辅助的二进制分析。
git clone https://github.com/jtang613/BinAssistMCP.git
cd BinAssistMCP
# 安装 Python 依赖项
pip install -r requirements.txt
# 或者单独安装:
pip install anyio>=4.0.0 hypercorn>=0.16.0 mcp>=1.0.0 trio>=0.27.0 pydantic>=2.0.0 pydantic-settings>=2.0.0 click>=8.0.0
Windows:
copy BinAssistMCP "%APPDATA%\Binary Ninja\plugins\"
macOS:
cp -r BinAssistMCP ~/Library/Application\ Support/Binary\ Ninja/plugins/
Linux:
cp -r BinAssistMCP ~/.binaryninja/plugins/
localhost(默认)9090(默认)both(SSE + STDIO)# 环境变量(可选)
export BINASSISTMCP_SERVER__HOST=localhost
export BINASSISTMCP_SERVER__PORT=9090
export BINASSISTMCP_SERVER__TRANSPORT=both
export BINASSISTMCP_BINARY__MAX_BINARIES=10
通过 Binary Ninja 菜单:
http://localhost:9090)。自动启动(默认):
binassistmcp.plugin.auto_startup 进行配置。在你的 Claude Desktop MCP 配置中添加以下内容:
{
"mcpServers": {
"binassist": {
"command": "python",
"args": ["/path/to/BinAssistMCP"],
"env": {
"BINASSISTMCP_SERVER__TRANSPORT": "stdio"
}
}
}
}
将基于 Web 的 MCP 客户端连接到:
http://localhost:9090/sse
向 Claude 提问:“分析已加载二进制文件中的 main 函数,并解释其功能”
Claude 将使用以下工具:
- get_functions() 查找 main 函数
- decompile_function() 获取可读代码
- get_function_pseudo_c() 获取 C 语言表示
- analyze_function() 进行全面分析
向 Claude 提问:“查找所有处理用户输入的函数,并检查是否存在缓冲区溢出”
Claude 将使用:
- search_functions_advanced() 查找输入处理函数
- get_cross_references() 跟踪数据流
- get_variables() 分析缓冲区使用情况
- set_comment() 记录发现
BinAssistMCP 提供了 40 多种专门的工具,这些工具按功能类别进行了组织:
list_binaries - 列出所有已加载的二进制文件get_binary_status - 检查分析状态和元数据update_analysis_and_wait - 强制更新分析并等待完成decompile_function - 生成高级反编译代码get_function_pseudo_c - 提取伪 C 语言表示get_function_high_level_il - 访问高级中间语言get_function_medium_level_il - 访问中级中间语言get_disassembly - 获取带注释的汇编代码get_functions - 列出所有带元数据的函数search_functions_by_name - 按名称模式查找函数get_functions_advanced - 高级过滤(大小、复杂度、参数)search_functions_advanced - 多目标搜索(名称、注释、调用、变量)get_function_statistics - 全面的二进制统计信息get_imports - 按模块分组的导入表分析get_exports - 带符号信息的导出表get_strings - 带上下文的字符串提取get_segments - 内存布局分析get_sections - 二进制节信息rename_symbol - 重命名函数和数据变量get_cross_references - 查找符号的所有引用analyze_function - 全面的函数分析get_call_graph - 调用关系映射set_comment - 在特定地址添加注释get_comment - 获取地址处的注释get_all_comments - 导出所有带上下文的注释remove_comment - 删除现有注释set_function_comment - 添加函数级文档create_variable - 在函数中定义局部变量get_variables - 列出函数参数和局部变量rename_variable - 重命名变量以提高清晰度set_variable_type - 更新变量类型信息create_type - 定义自定义类型和结构get_types - 列出所有用户定义的类型create_enum - 创建枚举类型create_typedef - 创建类型别名get_type_info - 详细的类型信息get_classes - 列出类和结构create_class - 定义新的类/结构add_class_member - 向现有类型添加成员create_data_var - 在地址处定义数据变量get_data_vars - 列出所有已定义的数据变量get_data_at_address - 通过类型推断分析原始数据get_current_address - 获取当前光标位置get_current_function - 识别当前地址处的函数get_namespaces - 命名空间和符号组织get_triage_summary - 完整的二进制概述get_function_statistics - 所有函数的统计分析每个工具都设计为与 AI 工作流程无缝集成,提供大语言模型可以轻松解释和处理的结构化响应。
暂未发现符合要求(具体的技术说明大于 50 字)的技术细节内容,故跳过该章节。
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
max_binaries 设置。