小程序逆向手工追了大半天REA 的 Agent 链不到十分钟出了证据链【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea同一个小程序的签名还原我手工做过一次大半天时间最后仍说不出签名函数的盐值来自哪个字节位置。换成 REA 的 Agent 链跑同一目标不到十分钟结论里每一项都挂着一个文件和字节区间各自带 SHA-256。差距不只是快。手工那套结论只有作者自己能复核换个人接手就是一团黑盒Agent 那套结论任何一个人、在任何一台机器上都能重新执行一遍验证。REA 是面向 Agent 的逆向工具链MCP 服务 CLI小程序 JS 去混淆、HTTPS 流量分析、bundle 静态重建这些场景都是可执行操作不是让大模型看看。下面只讲 JS 部分流量怎么拿到、代码怎么还原、签名怎么追、结论怎么交付。四个问题各自对应一条能敲进终端的命令。小程序 HTTPS 抓包流量先落地结论后开口手工抓包的坑从来不在抓不到而在后处理同一个接口会因滚动和下拉刷新发出多个变体请求头里塞满自定义字段和签名参数过滤、去重、按业务归类全靠人。中途证书过期或包被更新一次前面全得重捡。REA 对这个问题给的是两个入口都是被动式的。页面正在运行时通过 CDP 附加到你自己启动的 Chrome 系浏览器调试端口 9222只读、不注入脚本、不驱动页面docs/browser-observation.md流量已经是文件的话HAR 或 mitmproxy 原生格式直接离线解码不启动代理不发出任何一个目标请求。为什么要跑这两条命令把这个页面实际发出了什么、加载了哪些脚本一次变成结构化报告省掉十几轮手工过滤。rea list-browser-targets http://127.0.0.1:9222 --json rea inspect-web-page http://127.0.0.1:9222 TARGET_ID \ --include-console-text --include-json-body-shapes --json预期看到的是可附加目标列表然后是该页面的 DOM 结构、脚本清单、请求状态码、发起栈以及 JSON 响应体的类型与路径形状只留结构不留值敏感字段不会外泄。已经在用 mitmproxy 的话流文件也不用手工转换inspect-web-network-capture直接解码。这里有个容易被忽略的细节——bridge/mitmproxy/capture.py 复用了上游 tnetstring 解码器但在外面包了一层BoundedReader记录声明的长度先校验一条伪造了巨大长度的恶意记录会在上游解析器分配内存之前被拒掉authorization、cookie这类凭据字段默认脱敏格式边界见 docs/web-network-captures.md。解包之后代码还是不可读bundle 到模块图的落差解包拿到的app-service.js通常是一坿几千行的压缩文件变量名打没了模块被 webpack 包装一部分还被切进异步 chunk。在这种文件里搜sign、md5、encrypt命中的字符串列表比你能用的调用链长得多。REA 把这一段拆成两段操作。前一段是把页面里的脚本变成可分析的本地目录export-web-scripts只读已经落盘的捕获字节写出带校验清单的目录不重新请求原始 URL也不执行一行 JS。后一段是纯静态重建analyze-javascript-application输出模块、导入、路由、原生依赖关系。看 src/application/javascript/JavaScriptArtifactReconstruction.ts 里返回的统计字段——parsed_javascript_files、visited_ast_nodes、modules、findings——Agent 拿到的不是一份文件清单而是一张可以继续追问的图。更大的盲区是代码分割。小程序按页面切 chunk只分析入口文件必然漏掉异步加载的部分。恢复通道是把入口和所有依赖 chunk 一起交给recover-javascript-sources多文件输入保留相对目录布局跨 chunk 的模块 ID 才能互相解析。为什么要这么跑让恢复引擎把多个 chunk 放在一次调用里处理模块 ID 才能跨文件对上。rea recover-javascript-sources /tmp/web-scripts/main.js /tmp/recovered-chunks \ --additional-path /tmp/web-scripts/runtime.js \ --additional-path /tmp/web-scripts/shared.js \ --additional-path /tmp/web-scripts/checkout.chunk.js --json预期产物modules/下的恢复模块、inputs/下的原始输入快照、一份manifest.json清单结果里的analysis_input字段可以直接作为下一条静态分析命令的参数恢复产物原样喂回模块图docs/javascript-recovery.md。签名函数为什么找不到调用方把谁调用了它变成一次查询找到疑似签名函数只是开始。参数拼接顺序、hash 选择、有没有 salt、是否绑定时间戳每一步都得在 Node 里试跑。我有一次试了 14 种字段排列才拼出正确顺序而文档里只留了一句已验证下个人接手时没法复现。在 REA 里这一段是两种查询不是试错。trace-application-feature从一个字面量种子字符串、API、路由、模块、原生导出出发返回完整可达子图、终止路径和每条边的证据归属种子只接受精确或子串匹配刻意不支持正则——模糊命中是错误结论的主要来源。trace-javascript-semantics更深一层在认证语义图上做前向影响与后向溯源能恢复闭包捕获、对象读写、唯一解析的本地调用、参数与返回值流动乃至 EventEmitter 注册和 Node 定时器的静态候选。典型用法先分析一次拿到 Evidence 记录加上签名里那个可疑参数名作为字符串种子组装成输入文件再跑追踪。rea trace-application-feature /analysis/trace-input.json --json预期得到该字符串出现位置的完整可达子图、终止路径通常是构造 HTTP 请求的位置和每边的来源工作流细节见 docs/javascript-application-workflows.md语义图构建在 src/application/javascript/JavaScriptSemanticGraphBuilder.ts——这个字段从哪里来变成一条可引用的证据而不是脑图里的一句话。签名不在 JS 里的时候有些小程序的签名算法放在原生插件里。这时 trace 的结果不装懂它返回requires-provider-analysis绑上原生产物的精确 digest 和请求的导出名等调用方已有的 Hopper、Ghidra 或 IDA 接手。REA 不会隐式启动或切换任何引擎。交接后的分析会话长这样JS 端负责把问题指到哪个字节原生端负责回答它干了什么两边的证据各挂各的指纹。交付物是证据链而不是文档结论必须能被再次执行手工流程的交付物是文档但结论真正住在作者脑子里为什么这么拼、密钥哪来的、试过哪几种排列交接之后全是黑盒。REA 的交付物是结构化 Evidence来源位置、SHA-256、局限性说明、confidence 标记缺什么标什么。其中贯穿一条纪律路径永远不允许覆盖字节指纹。位置可以映射指纹才是身份。静态与运行时做调和reconcile-javascript-runtime时抓到的源码 SHA-256 加一个位置映射构成内容加位置匹配字节与该路径下的静态候选不一致就报显式 mismatch而不是差不多。候选不唯一就保持 ambiguous不硬选——这是结论不被放水的代价docs/javascript-runtime-reconciliation.md。它不擅长什么下面这些不是免责声明是实际会让流程卡住的地方。代码分割恢复引擎靠调用方自备把REA_WAKARU_COMMAND指向 wakaru 二进制Linux x641.13 及以上报告解析器按 1.14.0 验证REA 不负责安装。没配置恢复能力直接不可用其他分析不受影响。别期待结构提取模式还原全部真实 webpack 5 产物可能只产出 2 个模块esbuild scope-hoisted 产物可能只剩 1 个 unknown-format 脚本。恢复器如实报partial不假装成功——但这类 bundle 得靠人工阅读补开头说的时间差覆盖不到它们。mitmproxy 原生捕获的离线解码只在 Linux 上成立且需要调用方提供 mitmdump 12.2.3REA_MITMDUMP_COMMAND版本不符返回明确的 unsupported-profile 诊断。明确的做不了比错误的结果好但意味着别的平台用户只能走 HAR。浏览器场景必须自己用--remote-debugging-port9222起一个专用 profile 的浏览器REA 不启动、不拥有、不终止它。单条 CDP 消息有 64 MiB 上限恢复操作有 120 秒期限和 1 GiB 地址空间上限超了就失败回滚。需要人拍板的部分仍然是手工产品设计意图的深度分析、与业务方反复对齐语义、结论必须人签字的安全评估交付。Agent 链压缩的是执行不压缩判断。开工之前问自己四件事目标可重复吗同类小程序、同类接口未来几个季度还会再来吗交付物要审计吗结论汇报时要不要能指回证据还是能跑就算数团队管得住环境吗wakaru、mitmdump、调试端口的浏览器任何一个不稳自动化的收益还成立吗判断成分多大如果核心工作是从行为推导意图手工仍是主路径。快不是目的可复核才是。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考