小程序逆向:手工追了大半天,REA 的 Agent 链不到十分钟出了证据链
小程序逆向手工追了大半天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),仅供参考

相关新闻

企业微信外部群机器人如何实现消息处理结果自动返回群聊

企业微信外部群机器人如何实现消息处理结果自动返回群聊

在企业微信异步解耦的中台架构中,内网的 ERP 或大模型处理完客户的诉求后,如何跨越内外网的物理隔离,让潜伏在数百个外部群中的机器人准确无误地把结果“说”给对应的客户听? 这不仅仅是调用一个发送接口那么简单。在多租户、高并…

2026/10/15 3:02:35 阅读更多 →
企业微信API如何接入现有系统?接口层与业务层怎么划分

企业微信API如何接入现有系统?接口层与业务层怎么划分

很多企业研发团队在初次对接企业微信 API 时,为了赶进度,习惯性地采用“直连模式”:在 Webhook 的接收函数里直接写 if-else 业务判断,甚至直接连上内部 CRM 的数据库执行 SQL。 这种“烟囱式”的强耦合代码,在初期或…

2026/10/15 3:02:35 阅读更多 →
Rope 模型加载失败终极指南:从报错定位到修复验证的完整教程

Rope 模型加载失败终极指南:从报错定位到修复验证的完整教程

Rope 模型加载失败终极指南:从报错定位到修复验证的完整教程 【免费下载链接】Rope GUI-focused roop 项目地址: https://gitcode.com/GitHub_Trending/ro/Rope Rope 模型加载失败可能是你初装这个工具时最常碰上的问题——Rope 是一个基于 insightface insw…

2026/10/15 3:02:35 阅读更多 →

最新新闻

深入解析 cloudpods 中纯 Go xz 压缩库的演进路线:基于 ulikunitz/xz 的 TODO 蓝图与源码印证

深入解析 cloudpods 中纯 Go xz 压缩库的演进路线:基于 ulikunitz/xz 的 TODO 蓝图与源码印证

后端云原生运维虚拟化人工智能AI 应用 【免费下载链接】cloudpods 开源、云原生的多云管理及混合云融合平台 项目地址: https://gitcode.com/yunionio/cloudpods 点击查看 免费下载 本文以 cloudpods 仓库所 vendored 的 github.com/ulikunitz/xz 库之 TODO.md 为骨…

2026/10/15 3:43:42 阅读更多 →
AI科技热点日报 | 2026年10月14日

AI科技热点日报 | 2026年10月14日

文章目录 AI科技热点日报 | 2026年10月14日 📌 今日摘要 一、Google Gemini 4 Argon 正式上架,输出上限跃升至 100 万词元 事件概要 来源 / Sources 二、AI 巨头争抢用户入口:GPT-6 全量免费、Claude Haiku 5.5 降价 90% 事件概要 来源 / Sources 三、国产 AI 视频生成模型…

2026/10/15 3:43:42 阅读更多 →
STM32 HAL+硬件SPI驱动SH1106 OLED的u8g2实战指南

STM32 HAL+硬件SPI驱动SH1106 OLED的u8g2实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 3:43:42 阅读更多 →
C/C++避坑指南:内存管理、指针与多线程实战经验

C/C++避坑指南:内存管理、指针与多线程实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 3:43:42 阅读更多 →
Spring Security与JWT集成实战:现代Java应用安全解决方案

Spring Security与JWT集成实战:现代Java应用安全解决方案

1. Spring Security 核心价值与应用场景Spring Security 作为 Java 生态中最成熟的安全框架,本质上解决的是"谁能在什么条件下访问哪些资源"的系统级安全问题。在前后端分离架构成为主流的今天,传统基于 Session 的认证方式面临三大挑战&#…

2026/10/15 3:43:42 阅读更多 →
全面解析最新4K60无线HDMI视频传输方案功能规格

全面解析最新4K60无线HDMI视频传输方案功能规格

最新4K60无线视频传输方案功能规格全面解析-AM8960/AM8860一、方案定位:替代线缆的 4K60 无线显示链路二、Compact Air 三档方案矩阵三、系统组成与信号链路四、核心规格总览五、视频能力与低延迟表现六、DisplayPass 技术架构七、产品功能清单八、硬件接口与按键交…

2026/10/15 3:42:42 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →