使用说明
雷达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命令执行(分配)。
需求
设置
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——见 许可证.
