shiaho777/revx
GitHub: shiaho777/revx
ReVX 是一个跨平台 Rust 逆向工程工具包,提供 CLI 工具与本地 MCP 服务器,支持多架构二进制分析、反编译与 AI 辅助逆向工作流。
Stars: 0 | Forks: 0
# ReVX
`revx` 是一个全新的独立 Rust 逆向工程工作区,基于以下三个核心原则构建:
- 一个支持 Windows、macOS 和 Linux 主机的跨平台二进制文件,
- 一个位于 `.revx/` 的工作区权威,
- 一个由 CLI 和 MCP 共享的 daemon 能力接口。
本仓库遵循 ReVX v1 修正计划。它不会将临时的 HTTP 路由或直接从 CLI 到分析的调用视为产品契约。
## 当前结构
Rust 工作区分为以下几个部分:
- `revx-core`:规范模型、artifact 句柄、能力 DTO
- `revx-loader`:PE/ELF/Mach-O 标准化、字符串、重定位、调试 hooks
- `revx-arch-x64`:x86_64 解码与引用提取
- `revx-arch-arm64`:arm64 解码与引用提取
- `revx-analysis`:使用规范模型的跨架构恢复 pipeline 原型
- `revx-workspace`:SQLite 权威以及基于内容寻址的 artifact 存储
- `revx-daemon`:传输无关的能力服务、本地 IPC、stdio MCP
- `revx` 二进制文件:超轻量 CLI(`revx-query` + 系统 SQLite;轻量级的查询/状态/函数/交叉引用/反编译/反汇编)
- `revx-engine` 二进制文件:完整能力栈(分析、对象、daemon、mcp;系统 SQLite;默认 arm64 分析)
- `revx-micro` 二进制文件:纯标准库、超低内存的 ELF 分析器(`revx analyze --micro`)
- `revx-query`:用于轻量级 CLI 的只读 SQLite 查询 crate
使用以下命令构建完整的工具集:
```
cargo build -p revx -p revx-engine -p revx-micro --release
```
可选的完整对象/调试栈(zip/tar/xz 容器 + DWARF/PDB):
```
cargo build -p revx-engine --release --features full-loader
```
x86_64 解码可通过 `revx-analysis` 的 `arch-x64` feature 选择性启用。
请将 `revx`、`revx-engine` 和 `revx-micro` 并排放在 `PATH` 路径中(或设置 `REVX_ENGINE`)。轻量级命令在进程内执行;重量级命令会派生 `revx-engine`。非捆绑构建需要系统 `sqlite3` (pkg-config)。
默认分析目标是控制在个位数 MB 的进程内存增长(`REVX_RSS_MB=8`,单任务,精简的 Fast 快照)。仅在需要时通过 `REVX_FULL_MEM=1` / `REVX_RSS_MB=512` 提升。超低内存模式:`REVX_MICRO=1`。
## 命令
公开的命令接口仅限于 v1 计划:
- `revx daemon start|stop|status`
- `revx init `
- `revx add `
- `revx analyze [--profile fast|full]`
- `revx status`
- `revx survey`
- `revx funcs`
- `revx func `
- `revx xrefs `
- `revx strings`
- `revx search text `
- `revx search bytes `
- `revx evidence `
- `revx brief `
- `revx report generate `
- `revx trace import `
- `revx mcp serve|doctor|config|install`
## 工作区权限
工作区布局如下:
```
.revx/
project.toml
state.sqlite
artifacts/
cache/
reports/
log/
```
大型 payload 作为内容寻址的 blob 写入 `.revx/artifacts/`。SQLite 存储摘要、查询字段和 artifact 句柄,而不是原始的勘测/函数/报告 payload。
`project.toml` 是受 schema 约束的。v1 之前的不稳定布局不会被向前迁移;请重新初始化并重新分析。
## IPC 和 MCP
- daemon 默认传输方式:
- macOS/Linux:位于 `.revx/daemon.sock` 的 Unix domain socket
- Windows:命名管道(`\\.\pipe\revx-`),路径标记位于 `.revx/daemon.pipe`
- MCP 默认传输方式:
- stdio JSON-RPC 接口,仅公开高级工具
高级 MCP 工具包括:
- `project_open`
- `project_status`
- `binary_list`
- `analysis_run`
- `analysis_status`
- `binary_survey`
- `function_search`
- `function_profile`
- `decompile_function`
- `disassemble_function`
- `xrefs_query`
- `callgraph_slice`
- `string_search`
- `evidence_pack`
- `hypothesis_create`
- `hypothesis_update`
- `report_generate`
- `analysis_brief`
- `trace_import`
- `trace_query`
## MCP
仅限本地。分析使用**您的计算机**的 CPU/RAM。
```
{
"mcpServers": {
"revx": {
"url": "http://127.0.0.1:9310/mcp"
}
}
}
```
### 一键启动
| 操作系统 | 命令 |
|----|---------|
| macOS | `./deploy/local/start-macos.sh` |
| Linux | `./deploy/local/start-linux.sh` |
| Windows | `deploy/local/start-windows.cmd` |
发布包(GitHub Releases)会在启动脚本旁附带二进制文件:
| 包名 | 内容 |
|---------|----------|
| `revx-mcp-macos-arm64` | `revx-engine` + `start.sh` |
| `revx-mcp-macos-x64` | `revx-engine` + `start.sh` |
| `revx-mcp-linux-x64` | `revx-engine` + `start.sh` |
| `revx-mcp-windows-x64` | `revx-engine.exe` + `start.cmd` |
```
# 来自一个 release 文件夹
./start.sh # macOS / Linux
start.cmd # Windows
```
停止:`./deploy/local/stop-macos.sh` / `stop-linux.sh` / `stop-windows.ps1`
发布构建:推送标签 `v0.1.0`(workflow `.github/workflows/release.yml`)。
## 构建与冒烟测试
```
cargo check
cargo test
cargo run -p revx -- init .
cargo run -p revx -- add /path/to/binary
cargo run -p revx -- analyze /path/to/binary --profile fast
cargo run -p revx -- survey
cargo run -p revx -- func main
cargo run -p revx -- brief ActiveDesk
```
## 贡献
Issue → 提交 PR 到 `main` 分支 → CI(**ci / test**)通过 → 合并(Issue 通过 `Fixes #N` 自动关闭)。详见 [CONTRIBUTING.md](CONTRIBUTING.md);代码代理请参阅:[AGENTS.md](AGENTS.md)。
标签:Amass, Findomain, MCP, Rust, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 可视化界面, 网络流量审计, 逆向工程, 通知系统, 静态分析