REA 本地逆向分析没有源码如何把 App 行为追到二进制层【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/reaREAReverse Engineer Anything把本地逆向分析做成了两种可互换的形态一个只在你机器上跑的本地 MCP 服务器加一套能直接敲的 CLI。它替你做的核心动作是——拿一个没有源码的目标Electron 应用、原生二进制、.NET 程序集、固件返回行为结论并且给每条结论附上可追溯的证据记录。整个过程不依赖任何远端上传。从一个痛点开始想搞懂一个功能手上却只有二进制看到别人产品里一个你也很想做的功能第一反应往往是它到底怎么实现的。没有源码时多数人卡在这一步反编译工具甩给你一堆汇编和伪代码可这行为为什么这么走这个值从哪来仍要自己拼。REA 的定位就是把拼证据这件事交给工具链——你用 agent 或终端发一个问题它去检查目标、追踪相关代码再把发现连同证据一起交回来agent 接着可以追问、解释甚至写一个能跑的实现。两种形态走同一套工作流区别只在入口MCP 喂给 agentCLI 留给你和脚本。它能覆盖的目标、各自的成本与硬边界先一张表看全目标类型直接产出前置成本硬边界JS / Electron模块、导入、Source Map、路由、IPC、原生插件关系仅 Node.js npm无需逆向引擎只读文件、不运行应用原生二进制伪代码、汇编、字符串、符号、调用与引用需 Hopper / Ghidra / IDA / Kuna 之一伪代码不等于源码.NET 程序集元数据、CIL 指令、声明的原生依赖无纯静态不加载、不执行程序Go / Rust编译器版本、模块与构建设置 / crate 依赖边内置静态检查无需工具链缺段记为空元数据PE / ELF 静态项证书、导入表、note、build-id内置静态检查表缺失未被观察到Android APK清单声明、类、反编译方法、引用Headless JADX 完整 JDK依赖外部工具就绪固件区域、提取结果、原生交接Linux 上 Binwalk / Unblob不同操作绑定不同工具零引擎起步一条命令完成静态逆向分析最省事的一条路是静态分析——一个逆向引擎都不用装。JS/Electron 直接把模块、导入、Source Map、路由、IPC 和原生插件关系算出来README 把这条明确标成无需 native 分析引擎。.NET 只读元数据与 CIL 指令不加载也不执行程序Go、Rust、PE、ELF 走内置静态检查连对应工具链都省了。# 指向解包后的应用目录或 .asar结果自带完整证据 npx -y rea-agentslatest analyze-javascript-application /absolute/path/to/app --json有个坑要提前知道真实应用的完整 Evidence 能到几百 MBdocs/cli.md 举的例子是 334 MB 的 Obsidian。官方建议是——先落盘再投一个摘要视图去读而不是一把梭扫原始输出rea analyze-javascript-application /absolute/path/to/app --json app-evidence.json # 把几百 MB 的证据投影成约 10 KB 的摘要再交给视图命令去读 jq -c {source:{kind:inline,evidence:.},view:{kind:summary}} app-evidence.json app-view.json rea inspect-analysis-view app-view.json开跑前过一遍这份自检清单能少踩一半的报错Node.js 版本达标22.23.4 / 24.22.1 / 26.12.1README 要求Linux 上 PATH 里有 procps 兼容的ps进程归属检查用目标给对目录 /.asar/.dll/ 二进制路径用绝对路径大输出先落盘再用summary/page视图分页不直接读全量要碰原生二进制复用你已有的分析引擎策略不是让 REA 帮你装引擎而是复用你手上已有的那套。Hopper、Ghidra、IDA、Kuna 用哪个都行setup 也可以在批准后帮你把 Hopper 装上README。rea providers --json # 列出可用引擎及其支持的操作 rea analyze /absolute/path/to/program --provider ghidra --json # 显式绑定引擎引擎选择有几个讲究。多个引擎都能吃下同一个目标时要么显式指定要么设REA_ANALYSIS_PROVIDER作为长期偏好一旦选定这个引擎就绑死在当前会话直到你显式切换或关闭。冷启动慢的大文件可以靠REA_GHIDRA_STARTUP_TIMEOUT_MS或REA_HOPPER_STARTUP_TIMEOUT_MS抬高启动截止时间。和 Ghidra 的进程通信也不开公网端口docs/installation.md 说明桥接走的是仅限当前用户的本地 socket 加文件描述符。重复查询还能省——用--snapshot把成功结果存成本地文件owner-only 权限当目标字节、操作、参数、引擎、设置全部对上时下次直接复用很多情况下在启动引擎进程之前就命中缓存见 docs/cli.md。边界与契约REA 明确不做什么这一节是全文的可信度锚点值得单独看。它把自己不做什么写进了契约而不是让你猜选定的引擎运行时挂了不会自动换另一个顶上失败按原始原因返回docs/mcp-contracts.md、docs/ghidra-provider.md。伪代码永远不当作原始源码跨引擎比较也不会把 Hopper 和 Ghidra 的文本当成等价语义事实docs/installation.md。静态 JS / .NET 检查只读你给的文件不运行目标应用README。查不到记成未知绝不冒充没有docs/tool-design.md——这是硬规则。商业引擎IDA / Hopper / JEB你得自己持合法授权REA 不发 key也不认可破解README。未知和空的区分是这套契约最容易被人误读的地方。下面这张对照表列的都是官方明确给出的情形你遇到的情形REA 怎么记你不能据此得出Rust 的.dep-v0段缺失空元数据null这个程序没有依赖docs/cli.md某函数反编译失败卷宗仍返回伪代码 facet 标为不可用并带失败原因汇编等 facet 照常采集整个函数没法分析docs/mcp-contracts.md空调用列表且覆盖度不全 / 未知保留该覆盖度状态这个函数没有调用docs/mcp-contracts.mdPE import 目录缺失记录为该表未被观察到程序不依赖任何 DLLdocs/cli.md资源速查文档入口docs/cli.md全量命令、引擎选择、快照、导入导出、退出码。docs/mcp-contracts.md工具输出契约、Evidence 身份与比较、超时恢复。docs/installation.mdagent 注册、引擎配置、本地桥接、doctor 体检。关键命令rea doctor --json # 结构化环境诊断严格只读 rea doctor --provider ghidra --json # 只诊断某一个引擎 rea providers --json # 看可用引擎 rea compare left.json right.json # 对比两份 Evidence rea update # 升级 CLI怎么校验先跑rea doctor --json拿到只读体检报告确认环境与目标就绪碰原生目标前再用rea doctor --provider id单独验证那一台引擎。每条结论都可回溯到它附带的 Evidence 记录——工件身份、来源位置、观察与推断都写在里面读不懂的字段宁可当未知处理也别当没有。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?