一条命令跑通二进制逆向:rea AI 逆向 CLI 终端实操指南
一条命令跑通二进制逆向:rea AI 逆向 CLI 终端实操指南【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea手头一个陌生的 ELF,或者一个解包后的 Electron 目录,想弄清它的符号、调用关系和字符串落点,又不想打开图形界面反编译器。rea 就是为此做的:一个面向 Agent 的逆向 CLI,在本地一条命令完成分析,把符号、函数、引用连同原始证据一起返回。下面从只读体检讲起,到追完main的完整档案。先量能力边界:用三个数字定预期重建级:官方案例 DX-Ball 把汇编还原成 C,通过 3,205 个 x86 用例,并复现全部 63 个编译函数字节;档案上限:单个函数档案最多含 3,000 条 p-code 操作、12,000 条 def-use 边,超出部分给出显式省略计数;时间预算:Ghidra 引擎的启动、导入与分析默认给 330,000 ms,没到预算不会假装完成。引擎是可换角色:--provider在 Hopper、Ghidra、IDA 之间三选一,也可让 rea 自动挑;JavaScript/Electron 与 .NET 的静态分析则不依赖任何原生引擎。 用只读 doctor 体检,再按使用频率选安装档第一次接触,先跑一次不改动任何配置的诊断:npx -y rea-agentslatest doctor --json它逐项核对 Node 版本(22.x ≥22.23.4、24.x ≥24.22.1 或 26.12.1,23 与 25 两个大版本不在支持列表)、引擎可执行文件与 Agent 配置,失败项后面直接附修复命令。安装按使用频率分三档:只跑一次:始终npx -y rea-agentslatest command,零全局安装;当日常命令用:npm install --global rea-agents,包同时注册rea和rea-agents两个可执行名;接自己的 Agent:npx rea-agents setup注册 MCP 服务器与工作流指引,支持 Claude Code、Codex、Cursor、Gemini CLI 等 20 余种客户端;它只写配置,外部依赖一律自己装。已有 Ghidra 的话,指认现有安装即可,rea 从此纯命令行驱动它:export GHIDRA_INSTALL_DIR/absolute/path/to/ghidra_12.1.4_PUBLIC export JAVA_HOME/absolute/path/to/jdk-21 rea doctor --provider ghidra --jsonrea 接受 Ghidra 12.x(≥12.1),桥接在 12.1.4 JDK 21 上验证过。体检过后,rea providers --json和rea capabilities --json给出当前环境真正可用的清单,不是猜测。从编译练手目标到追完 main 的完整档案练手目标就在仓库里:scripts/fixtures/binary-layout.c,含四个全局变量、read_values()辅助函数与main。先 clone 下来,编译两份:git clone https://gitcode.com/GitHub_Trending/rea2/rea cd rea gcc -O0 -g -o hello_debug scripts/fixtures/binary-layout.c gcc -O0 -s -o hello_stripped scripts/fixtures/binary-layout.chello_debug留作对照;hello_stripped剥掉了符号表,函数边界得靠引擎推断,是这条主线要啃的对象。从 stripped 版开跑:rea analyze ./hello_stripped --provider ghidra --json它执行binary_overview概览工作流,一次返回目标架构、文件格式、符号、字符串、函数清单与调用关系,并带目标身份。记下main的入口地址,逐层深入:rea function ./hello_stripped main --provider ghidra --json rea decompile ./hello_stripped main入口 --provider ghidra --jsonfunction建函数档案:入口地址、谁调用它、它调用谁,外加控制流图;p-code 与 def-use 数据带省略计数。只想要汇编、不跑反编译,换rea instructions。追到read_values的调用边后,rea xrefs ./hello_stripped 地址 --provider ghidra --json给一份有上限的引用列表,原始类别保留;再定位字符串:rea search ./hello_stripped source-owned --provider ghidra --json rea search ./hello_stripped . --kind procedures --mode regex --provider ghidra --json第二条按 Java 正则匹配过程名。高频参数记两个:默认终端格式是 TOON,给人读的,脚本消费加--json;重复查询加--snapshot ./analysis.json,目标字节、操作、参数、provider、设置全部一致时才命中缓存。内存紧张用GHIDRA_HEADLESS_MAXMEM512M压低 Ghidra JVM 堆。绕开重型引擎:两条零分析器路径Electron/JS 静态解析:对目录或.asar直接跑npx -y rea-agentslatest analyze-javascript-application /absolute/path/to/app --json返回模块、导入、Electron IPC 边界及各自证据。目录或.asar且未给--provider/--snapshot时,rea analyze会自动路由到这条工作流。离线 ELF 布局诊断:不建任何反汇编数据库,直接回答节区/段布局、原始符号与重定位、静态链接名,并给出 RELRO、NX、PIE、canary 等缓解标志的静态推断。它需要一个带 pwntools 4.15.0、pyelftools 0.33、Unicorn 2.1.2 的独立 Python(Linux x64):REA_PWNTOOLS_PYTHON/absolute/isolated-env/bin/python \ rea inspect-binary-layout ./hello_stripped --json细节见 docs/binary-diagnostics.md。读懂输出:身份基准、unknowns 与伪代码的成色身份:每条 Evidence 都带目标的路径、SHA-256 与 size,是后续所有结论的对齐基准。字节一变,快照命中与身份立刻失配;复现别人的结果前先核对这三样。覆盖度:结果明确切分完整分析与部分观察,unknowns列出没啃下来的部分——当信息读,不当报错读。成色:Ghidra 吐出的伪代码是反编译器输出,Limitations 栏会反复声明这一点,不会被包装成原始源码。⚠️ 排障速查:先认退出码,再对高频坑退出码语义:退出码含义0完成。允许带部分证据、警告或未解问题返回1未完成。输入无效、权限、超时等,结构化输出会带原因128 N被信号 N 终止。130对应 SIGINT,143对应 SIGTERM高频坑:症状处理capability_unavailable,details.selection_reason为ambiguous该目标被多个引擎同时支持,从details.candidate_ids挑一个显式指定--providerGhidra 启动超默认 330,000 ms 预算大目标调大:REA_GHIDRA_STARTUP_TIMEOUT_MS1800000Node 版本不达标按提示装受支持版本;rea update只负责 npm/Bun 全局安装自身Linux 上 Ghidra/JS 分析在启动前被拒PATH 里缺 procps 版ps,先装 procps 包用户可见错误逐条维护在 docs/user-visible-errors.csv,它提示你重试或跑rea doctor时,照办即可。把结论变成重建:下一步读哪两份文档命令行只是入口。README 里 DX-Ball、TH04(16 位 DOS 指令里恢复角度计算)、Notion(Electron renderer 追到主进程剪贴板桥)三个案例,示范从「看懂」到「写出来」的链路。系统学习两份文档就够:全部命令、快照与导入导出机制见 docs/cli.md,Agent 会话、证据链与工具契约见 docs/mcp-contracts.md,安装细节回 docs/installation.md。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考