二进制分析服务

提供基于radare2和Rizin的二进制静态分析、反汇编、反编译、ESIL模拟、实时调试、漏洞扫描和漏洞开发功能。

  • by drvcvt
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 drvcvt/radare2-mcp

使用说明

雷达2-MCP

MCP服务器公开了radare2和Rizin二进制分析功能。提供85个工具,涵盖静态分析、反汇编、反编译、ESIL仿真、实时调试、漏洞扫描和漏洞利用开发,所有这些都是通过模型上下文协议上的结构化JSON响应实现的。

它做什么

静态分析(19个工具)

打开二进制文件、列出函数/导入/导出/字符串/节/类、反汇编和反编译函数、读/写字节、重命名函数、添加注释、查找加密常量、列出PE资源和重定位。

高级分析(10个工具)

一次性二进制分诊、深度单功能分析、crackmes约束提取、ESIL执行跟踪、自动漏洞模式扫描、crackme求解器、IOC提取、漏洞开发助手、二进制差异、文件格式解析。

ESIL仿真(10个工具)

具有寄存器/内存读写、单步和运行到地址、原始ESIL表达式求值的持久ESIL VM会话。状态在多步骤仿真工作流的工具调用中得以保留。

RzIL仿真(16个基于Rizin的工具)

通过Rizin的RzIL后端进行类型化位向量仿真。IL AST提升、单个CPU标志访问、调用约定分析、增强的类型和符号查询。

实时调试(18个工具)

启动或附加到进程,设置/删除断点,继续/逐步执行,读/写寄存器和内存,检查内存映射、线程和回溯。持久调试会话在工具调用中仍然存在。

搜索和导航(9个工具)

字节模式搜索、字符串搜索、ROP小工具搜索、调用图和控制流图提取、熵分析、原始r2命令执行(分配)。

需求

  • Node.js 20+
  • 雷达2 >=5.8已安装并位于PATH中
  • 里津 >=0.8(可选,适用于RzIL工具)

设置

npm install
npm run build
node dist/index.js

或者在开发过程中:

npm run dev

MCP客户端配置

{
  "mcpServers": {
    "radare2": {
      "command": "node",
      "args": ["/path/to/radare2-mcp/dist/index.js"],
      "env": {
        "ALLOWED_DIRS": "/path/to/binaries"
      }
    }
  }
}

环境变量

变量 默认值 描述
ALLOWED_DIRS (none) 逗号分隔的目录,可以从中打开二进制文件。如果未设置,则不受限制。
R2_ANALYSIS_LEVEL aaa 打开二进制文件后运行分析命令。
R2_COMMAND_TIMEOUT 30000 单个r2命令的超时时间(毫秒)。
RIZIN_PATH rizin Rizin可执行文件的路径。
RIZIN_COMMAND_TIMEOUT 30000 单个Rizin命令的超时时间(毫秒)。

建筑

radare2/
  src/
    index.ts             # Entry point, stdio transport, shutdown handlers
    server.ts            # MCP server setup, registers all tools
    types.ts             # Shared TypeScript interfaces and Zod schemas
    r2/
      session.ts         # r2pipe wrapper
      session-cache.ts   # Session reuse across tool calls (avoids re-running aaa)
      commands.ts        # Typed wrappers around r2 commands
      sanitize.ts        # Input validation for paths, addresses, commands
      debug-session-manager.ts
      esil-session-manager.ts
    rizin/
      rizin-session.ts   # Rizin process management (newline cmd, null-byte response)
      rzil-session-manager.ts
    tools/               # 85 tool files, one per tool
    utils/               # Error helpers, formatters, pagination
  tests/
    unit/                # Mocked tests, no radare2 needed
    integration/         # Requires r2 in PATH

三种会话模式:用于静态分析的缓存会话(跨调用重用,5分钟TTL)、持久调试会话(标识UUID,跨调用生存)、持久ESIL/RzIL会话(相同模式,用于仿真状态)。

所有用户输入均通过验证 sanitize.ts 然后传递给r2。对二进制路径进行检查 ALLOWED_DIRS 具有符号链接分辨率。这 r2_command 该工具将命令限制在一个安全的满配列表中。

安全

  • 无任意命令执行-- r2_command 使用异体语
  • 通过符号链接解析和 ALLOWED_DIRS 执行
  • 注释采用base64编码,以防止r2命令注入
  • 搜索查询已针对shell元字符进行了净化
  • 仅限本地——r2pipe生成本地进程,MCP在stdio上运行

许可证

CC BY-NC-SA 4.0——见 许可证.