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, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 可视化界面, 网络流量审计, 逆向工程, 通知系统, 静态分析