
rea 上手指南十分钟用 CLI 逆向你手头的第一个二进制【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea一个 stripped 的 ELF 躺在桌面上没有符号表没有源码你也不想打开 Hopper 的 GUI 再学一遍插件体系。rea 就是为这种场景准备的 CLI 与 MCP 服务它把原生二进制、JavaScript/Electron、.NET 程序集、Android 包、固件乃至网站分析收敛进同一套命令分析引擎可插拔Hopper、Ghidra、IDA每条结论都附带证据。跟着本文走完你会在一台干净机器上装好它、跑通一次完整分析并且能读清输出里的身份锚点、覆盖范围与未解问题。 安装与自检命令先让rea doctor全绿运行时硬约束rea 要求 Node.js22.x22.19、24.x24.11或 26Node 23、25 及预发布版本不受支持。不达标时会看到明确提示Install Node.js 22.x (22.19), 24.x (24.11), or 26.换运行时即可不要自行猜测。包名是rea-agentsCLI 同时注册为rea和rea-agents两个可执行名见 package.json 的bin字段。安装有三条路按你的目的选# 方式 A零全局安装一次性分析 npx -y rea-agentslatest analyze-javascript-application /absolute/path/to/app --json # 方式 B全局安装作为日常命令 npm install --global rea-agents rea --help # 方式 C完整 setup想接上自己的 Agent 时推荐 npx rea-agents setupsetup是「计划先行」的事务先列出将修改的每个配置路径、备份方式和外部软件安装计划你确认后才写入。它支持 Claude Code、Codex、Cursor、Gemini CLI、Grok Build、VS Code、Copilot CLI 等十余种客户端完整列表见 docs/installation.md。注意setup只负责注册 MCP 与安装工作流指引永远不替你安装 Node.js、npm、Java、Ghidra、IDA、JADX 等外部依赖。决策点只想试 JavaScript/Electron 或 .NET 静态分析可以跳过下面的引擎部分——它们不需要任何反编译引擎。要走通「逆向一个二进制」引擎三选一Hoppersetup批准后自动下载安装macOS 走官方 DMGLinux 走官方 deb/rpm 包运行在私有 Xvfb 上已有安装直接复用macOS 首次运行需手动选择 demo 模式或激活授权Ghidra复用你已有的 12.1.x 安装桥接以 12.1.4 验证用环境变量指认路径export GHIDRA_INSTALL_DIR/absolute/path/to/ghidra_12.1.4_PUBLIC export JAVA_HOME/absolute/path/to/jdk-21 # 可选java/javac 已在 PATH 时省略 rea doctor --jsonIDA通过现有 IDA MCP 配置接入复用你已有的.idb/.i64工作流。装完先做一次只读体检rea doctor逐项检查宿主平台、Node 版本、引擎可执行文件与 Agent 配置每个失败项后都跟一条精确的修复命令。指定引擎复查用rea doctor --provider ghidra --json。这也是 rea 最典型的形态分析引擎的 GUI 照常打开但操作和取数全部由桥接层替你完成。截至仓库状态项目在 GitHub 已收获 3 万 star。 编译第一个练手目标stripped 版最能体现 rea 的价值仓库自带一个适合新手的目标scripts/fixtures/binary-layout.c。它包含全局变量、线程局部变量、一个read_values()辅助函数和main是理解「符号、字符串、函数、引用」的最小样本核心逻辑如下int stored_value 7; __thread int tls_value; __attribute__((noinline)) int read_values(const char *text) { char buffer[32]; snprintf(buffer, sizeof(buffer), %s, text); return buffer[0] stored_value tls_value; } int main(int argc, char **argv) { return read_values(argc 1 ? argv[1] : source-owned); }在 Linux/macOS 上编译出两份。stripped 版没有符号表rea 依然能还原函数边界——这正是它区别于「只靠符号表工作」的工具之处gcc -O0 -g -o hello_debug scripts/fixtures/binary-layout.c gcc -O0 -s -o hello_stripped scripts/fixtures/binary-layout.c 第一次分析命令速查与输出里该看什么原生分析的七个核心命令与 MCP 工具一一对应目标路径、搜索词、函数名/地址按需替换命令用途rea analyze target --provider ghidra --json概览符号、字符串、函数、调用rea search target search --provider ghidra --json搜字符串或函数名rea function target main --provider ghidra --json单个函数的完整档案rea decompile target 0x1000 --provider ghidra --json指定过程的伪代码rea xrefs target 0x1000 --provider ghidra --json谁引用了这个地址rea trace target search --provider ghidra --json沿引用追踪一个功能rea instructions target main --provider ghidra --json只读汇编不反编译高频参数在首次用到时就近记住参数/环境变量作用--json结构化输出默认终端格式是 TOON适合人读--provider hopper\|ghidra\|ida显式绑定引擎不传则按确定性规则自动选择--snapshot path结果缓存到本地快照相同目标参数直接复用省去重复启动引擎--procedure、--pattern、--query等号形式传参避免以-开头的名字如 Objective-C selector被当成选项--kind strings\|procedures/--mode literal\|regexsearch的搜索范围与匹配模式REA_ANALYSIS_PROVIDER设置默认提供方命令行--provider优先GHIDRA_HEADLESS_MAXMEM512M限制 Ghidra JVM 堆大小适合小目标、小内存机器跑第一次概览同时看两个「能力边界」命令rea analyze /absolute/path/to/hello_stripped --provider ghidra --json rea providers --json # 可用分析引擎及其支持的操作 rea capabilities --json # 辅助能力清单analyze走binary_overview工作流。输出里重点看三件事Artifact identity路径、SHA-256、大小。它是后续所有结论的锚点——目标字节一变结果身份就失配旧结论不能混用Coverage哪些分析是完整的、哪些是部分观察。unknowns里列出的是「确实没解出来」不是被悄悄忽略LimitationsGhidra 的伪代码是反编译器输出永远不是原始源码rea 不在结果里伪装这一点。 追一个函数直到证据链闭环对main建档案、看伪代码、看汇编三条命令的语义边界被严格区分rea function /absolute/path/to/hello_stripped main --provider ghidra --json rea decompile /absolute/path/to/hello_stripped 0x401146 --provider ghidra --json rea instructions /absolute/path/to/hello_stripped main --provider ghidra --jsonfunction返回函数档案dossier入口地址、调用者/被调用者、控制流图、最多 3000 条 p-code 操作与 12000 条 def-use 边decompile返回可读伪代码instructions只读 Ghidra Listing 的原始指令不启动反编译器。如果首次运行报 Ghidra 启动超时默认启动期限是 330000ms约 5.5 分钟覆盖导入自动分析桥接大二进制会超出它。解法只有一个环境变量export REA_GHIDRA_STARTUP_TIMEOUT_MS900000。然后看引用与字符串把入口到数据的链路闭掉rea xrefs /absolute/path/to/hello_stripped 0x401146 --provider ghidra --json rea search /absolute/path/to/hello_stripped source-owned --provider ghidra --json rea search /absolute/path/to/hello_stripped ^read_ --provider ghidra --mode regex --kind procedures --jsonxrefs返回有界引用列表调用/跳转/数据/读写/间接/条件等分类都保留原始 ReferenceManager 类型search支持字面量与 Java 正则两种模式可分别搜字符串和过程名。在这个例子里你能亲眼看到main对read_values的调用边和source-owned字符串的落点——一条完整证据链就此闭环。 不需要引擎的其他目标路径不是每次逆向都要启动 Ghidra。对两类常见目标rea 提供零引擎路径JavaScript/Electron 应用或 ASAR纯静态解析npx -y rea-agentslatest analyze-javascript-application /absolute/path/to/app --json rea analyze /path/to/some/dir --json # 目录或 .asar 且未指定 --provider/--snapshot 时自动路由返回模块、导入、Electron IPC 边界及各自证据。离线 ELF 布局诊断inspect-binary-layout它不启动任何反汇编器数据库直接回答「这个文件里有什么」——节区/段布局、原始符号与重定位、静态链接名以及 canary、PIE、NX、RELRO 等缓解措施的静态推断。需要一个自带 pwntools 4.15.0 pyelftools 0.33 unicorn 2.1.2 的隔离 Python 环境REA_PWNTOOLS_PYTHON/absolute/isolated-env/bin/python \ rea inspect-binary-layout ./hello_stripped --json刚才编译的binary-layout.c正是这条路径的官方 fixture见 docs/binary-diagnostics.md。当你的目标从「看懂」走到「写出来」官方 showcase 给了三条可复现路径DX-Ball 案例把声音定位的 pan 计算从汇编还原成 C重建结果通过3205 个原始 x86 用例并复现全部63 字节编译产物TH04 案例在 16 位 DOS 指令上恢复子弹环的角度计算并与历史编译器输出比对Notion 案例展示了从 Electron renderer 一路追踪到主进程 IPC 剪贴板桥的完整链路。完整记录见 README.md 的 Showcases 一节。 失败速查退出码表与高频错误的标准解法退出码语义0只代表操作完成不代表没有 unknowns——结果里可能仍有部分证据、警告或未解问题1代表操作未完成输入无效、权限不足、取消、超时等结构化输出会给出原因退出码含义0操作完成结果可能仍含部分证据、警告或未解问题1操作未完成无效输入、权限不足、取消、超时或其它失败128 N进程被信号N终止如130为 SIGINT143为 SIGTERM在管道中使用时建议打开pipefail让下游格式化工具保留 rea 的失败状态set -o pipefail rea inspect-artifact ./app.asar --json | jq . inspection.json高频失败与标准解法症状标准动作analyze报capability_unavailabledetails.selection_reason为ambiguous多个引擎都支持该目标从details.candidate_ids里显式选一个例如--provider ghidraselection_reason为provider_unavailable运行rea doctor --provider 实际失败的引擎 ID --jsonGhidra 启动超时export REA_GHIDRA_STARTUP_TIMEOUT_MS900000默认 330000msNode 版本不达标按提示换运行时Install Node.js 22.x (22.19), 24.x (24.11), or 26.疑似 bug先rea update只更新 npm 安装的所有者或npx rea-agentslatest setup刷新注册rea 的用户可见错误经过专门打磨仓库维护着一张逐条审核的 docs/user-visible-errors.csv。当它提示「Retry once; if it continues, runrea doctor」时照做即可不要自行猜测内部原因。回到开头那个 stripped 的 ELF你已经知道第一条命令rea analyze、读得出输出里的身份锚点和 unknowns也知道超时、引擎歧义各找哪条修复命令。下一层的路已经铺好——想摸清所有命令与快照/导入导出机制看 docs/cli.md想理解 Agent 侧会话、证据与工具契约看 docs/mcp-contracts.md想了解各引擎含 Hopper、Ghidra、IDA、Kuna的能力边界与验证责任看 docs/reverse-engineering-tools.md。追完第一个main只是开始xrefs指出去的下一个地址就是 rea 替你留好的入口。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考