工具
r2pipe radare2 多语言脚本接口
radare2 官方的脚本接口,同一仓库内收录了二十多种语言的实现。所有绑定都向 radare2 发送命令字符串并返回其文本输出,这正是 r_core_cmd_str() 背后的设计;README 建议请求 JSON 输出并将其解码为本地语言对象,而不是直接调用 C API。绑定可经由从 r2 内部运行脚本时的 R2PIPE_IN/R2PIPE_OUT 管道、新启动的 r2 -q0 进程、TCP、HTTP 或 radare2 自有的 RAP 协议连接,其中许多支持异步调用;r2pipe 脚本还可用于实现反汇编器、IO 后端或 ESIL 系统调用处理器等 radare2 插件。
- 目标
- 二进制
- 类别
- 原生分析工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 审阅时最新的 GitHub 发行版为 6.1.2,于 2026-04-20 发布,仅含源码;所审阅的 master 提交比它多 54 个提交。各语言实现也分别打包发布:Python 包 r2pipe 2.1.0(需 Python 3.6+)于 2026-10-19 上传至 PyPI,与 python/pyproject.toml 一致;npm 上的 r2pipe 为 2024-01-16 发布的 2.8.6,r2pipe-ts 为 0.4.0。Rust crate 位于独立的 r2pipe.rs 仓库;README 中的能力表标明了各语言支持哪些通信后端。
- 除 WebAssembly 版本外,所有绑定都要与一个 radare2 进程通信:或在本地启动,或作为 TCP、HTTP、RAP 服务端连接;命令字符串和输出格式取决于所用的 radare2 版本。CI 在 Ubuntu 24.04 上安装 radare2 6.1.4 的 Debian 软件包,测试 Perl、Python、TypeScript、Ruby、Tcl、Vala、Swift 和 .NET 绑定,其他语言未核查。
- python-wasm 是独立的 r2pipe_wasm 包,通过 Wasmer 的 Python SDK 1.1.0 在 Python 内运行 radare2 的 wasi-api WebAssembly 构建,默认下载带有该构建的最新稳定版本。其 README 仅验证了 Linux x86_64 上的 CPython 3.9,示例固定使用 6.1.4,并报告已发布的 6.2.2 API 模块在启动时会触发陷阱。
- GitHub 未识别出覆盖整个仓库的许可证。Python、Python WASM、Go、.NET、Haskell 和 Erlang 目录附有 MIT 许可证文件,npm 包也声明为 MIT;其他目录未核查。待分析的二进制由使用者自行提供;TypeScript 测试附带一个测试文件 typescript/tests/fixtures/wasm-api.wasm。本次未安装或运行任何绑定。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · radareorg/radare2-r2pipe · 修订 c355810
- README.md#L56-L82 GitHub · radareorg/radare2-r2pipe · 修订 c355810
- python/README.md GitHub · radareorg/radare2-r2pipe · 修订 c355810
- python/pyproject.toml GitHub · radareorg/radare2-r2pipe · 修订 c355810
- python/LICENSE GitHub · radareorg/radare2-r2pipe · 修订 c355810
- python-wasm/README.md GitHub · radareorg/radare2-r2pipe · 修订 c355810
- nodejs/r2pipe/package.json GitHub · radareorg/radare2-r2pipe · 修订 c355810
- typescript/package.json GitHub · radareorg/radare2-r2pipe · 修订 c355810
- rust/ORIGIN GitHub · radareorg/radare2-r2pipe · 修订 c355810
- .github/workflows/ci.yml GitHub · radareorg/radare2-r2pipe · 修订 c355810
- https://github.com/radareorg/radare2-r2pipe/releases/tag/6.1.2
- https://pypi.org/project/r2pipe/2.1.0/
- https://www.npmjs.com/package/r2pipe/v/2.8.6