REA 的 Rust 移植版,一款仅本地运行、支持 CLI/MCP 工作流并内置原生 Ghidra worker 的逆向工程工具
REA 的 Rust 移植版本,用于从终端或 MCP 客户端进行本地逆向工程。
检查二进制文件、反编译函数、分析 JavaScript 和 Electron 应用、读取托管和移动端产物,并处理进程和浏览器捕获。CLI 和 MCP 服务器使用相同的工具实现。运行时不需要 Node.js。
预构建版本包含 rea、MCP 服务器以及适用于 macOS、Linux 和 Windows 的 ARM64 与 x86-64 架构的 Ghidra worker。无需 Node.js、Rust 工具链或管理员账户。
curl -fsSL https://github.com/nanashili/rea-rust/releases/latest/download/install.sh -o install-rea.sh
sh install-rea.sh
export PATH="$HOME/.local/bin:$PATH"
rea --version
在 Windows 上,请从 PowerShell 提示符运行 PowerShell 安装程序:
irm https://github.com/nanashili/rea-rust/releases/latest/download/install.ps1 -OutFile install-rea.ps1
powershell -ExecutionPolicy Bypass -File .\install-rea.ps1
安装程序会校验发布版本的校验和,并将带版本号的文件存储在
每用户目录中。它们不会修改 shell 配置文件、PATH 或 MCP 设置。
重新运行安装程序即可更新,或设置 REA_VERSION 来选择某个发布版本。有关
路径、自定义位置和卸载方法,请参阅
安装详情。
需要固定版本的 Rust 工具链(1.93.1)、用于发布脚本的 Python 3.11+, 以及 C/C++20 编译器(Linux 上为 GCC 12+)。本仓库包含所有内嵌的 辅助程序源码。
git clone https://github.com/nanashili/rea-rust.git
cd rea-rust
cargo build --locked --release -p rea
target/release/rea --help
在 macOS、Linux 或 Windows 上,单独构建 Ghidra worker 并将其放置在 rea 旁边:
cargo build --manifest-path ghidra-rust-worker/Cargo.toml --locked --release
cp ghidra-rust-worker/target/release/rea-ghidra-rust-worker target/release/
在 PowerShell 中,使用 Copy-Item ghidra-rust-worker/target/release/rea-ghidra-rust-worker.exe target/release/ 执行复制步骤。
该 worker 使用原生 Ghidra 反编译器,无需 JVM。若要将其保存在其他位置,请将 REA_GHIDRA_RUST_WORKER 设置为其绝对路径。
Frida 是可选的构建特性。参见 Frida 设置。 其他分析提供程序和外部工具需要各自安装。
rea inspect /path/to/program
rea decompile /path/to/program main --provider ghidra-rust
rea inspect-go-binary /path/to/go-program --format json
rea doctor
对任何命令使用 --help 可查看其参数和选项。
将以下内容添加到客户端的 MCP 配置中,并替换可执行文件路径:
{
"mcpServers": {
"rea": {
"command": "/absolute/path/to/rea",
"args": ["mcp"]
}
}
}
rea mcp 启动 stdio 服务器。请使用已安装可执行文件的绝对路径;MCP 客户端的 PATH 可能与你的 shell 不同。rea setup 会预览客户端注册和技能安装,然后在应用更改前询问。发布安装包已包含 Ghidra worker。
GitHub Actions 在发布带标签的版本之前,会在两种架构上构建并冒烟测试 macOS 和 Linux 归档,以及 Windows ARM64 和 x64 归档。不提供 Musl Linux 和启用 Frida 的二进制文件。其他分析提供程序和外部工具需要自行安装。
已知行为差异和测试覆盖情况记录在迁移验证报告中。
本地应用程序基准测试覆盖 11 个已安装的 macOS 应用程序和 Go:25 个工作流中的 125 个样本,包含耗时、CPU、内存、每次调用结果和已记录的失败。失败验证重跑记录了修复、重复测量和剩余失败。
单独的 TypeScript/原生对比使用冻结构建,于 2026 年 10 月 24 日在 Apple M1 Pro 上测量,文件系统缓存已预热。每个版本七个会话;重复请求行每个版本使用 56 次调用:
| 任务 | TypeScript | Rust |
|---|---|---|
| 启动并检查 Go 构建元数据 | 570 ms | 64 ms |
| 在运行中的会话里重复一次 Go 元数据请求 | 7.3 ms | 16.2 ms |
| 启动并反编译一个小型 C 程序中的第一个函数 | 9.43 s | 0.39 s |
| 该反编译会话期间采样的进程族峰值内存 | 1,022 MiB | 214 MiB |
反编译对比中,TypeScript 使用 Java Ghidra,原生构建使用 Rust Ghidra。Rust 在较大的 Go 测试中因导入名称冲突而失败;Java 返回了全部三个请求的函数。
有关输入、原始测量、输出差异和复现步骤,请参阅运行时对比和 Ghidra 结果。性能审计涵盖后续的 Rust 优化。
cargo fmt --all -- --check
cargo clippy --workspace --locked
cargo test --locked -p rea-core -p rea-rust-analysis -p rea-mcp
开发指南涵盖源码布局、完整工作区测试要求、Ghidra worker 以及实验性 C API。 在更改工具行为时,请参阅 MIGRATION_GUIDE.md,并参阅架构说明了解 crate 归属。