简报·YT
← 返回 GitHub 动态
morluto/rea · 📈 热门项目 已完成

morluto/rea rea-agents-6.4.0

2026-10-11 03:58 · ⭐ 19.8万 · GitHub Release 原文 ↗
#逆向工程 #安全分析 #版本发布

morluto/rea rea-agents-6.4.0

morluto/rea(REA)是一个面向逆向工程与安全分析的 AI Agent/工具链,把 Android/ADB、JEB、Ghidra、IDA、Hopper、JavaScript/Electron、浏览器抓包和 MCP 等能力接入自动分析工作流。它值得关注在于跨引擎、跨平台,并让 AI 客户端通过 MCP 调用复杂逆向分析。

一句话概括:6.4.0 重点扩展 Android、JEB、Ghidra、JavaScript 和 RPC 发现能力,增强大型分析与资源受限场景的可控性,同时引入多项 API 和数据 schema 的 breaking changes。

新增能力 - Android:通过 ADB 增加设备检查、split-APK 获取、日志、截图、文件传输、显式 app lifecycle actions;用 Apktool 解码 manifest 和 localized strings。 - JEB:通过调用方启动的本地 JEB MCP server,浏览 project units 并反编译选中项。 - 大型分析:无需加载每个 payload 就能发现 retained Evidence;通过 summaries/selected views 检查 JavaScript graphs、binary layouts、function dossiers。 - JavaScript:将源码分析隔离到 owned process,可配置 heap 和 timeout 限制;资源耗尽时保留已完成事实和明确 unknowns。 - Ghidra:自动分析前可配置 import language/compiler specifications,并 seed functions、code、labels;支持 Windows PE DLLs 和有界 MIPS ELF,包括 carved MIPS 输入和不完整 section tables,Windows P0 仍只读。 - RPC discovery:识别 JS 应用和 web bundles 中的 supported tRPC calls、HTTP-link URLs、named GraphQL operations。 - 其他二进制:新增 PE resource inspection,以及针对 x64 PE32+/.NET 8 RTR 9.1 输入的只读 NativeAOT metadata parsing;NativeAOT 的 Windows-host Ghidra workflow 尚未在真实 Windows 主机验证。 - 设置/集成:新增 Pi、Hermes、Qwen Code setup,支持 Hermes active-profile;改进 Codex onboarding。 - MCP/进程:新增 REA_MCP_INPUT_SCHEMA_PROFILE=compact,适配 Kimi/Moonshot 等大小受限 MCP 客户端,同时保留 canonical runtime validation;新增 live process-capture progress 和可选 finalization_ms,取消仍立即生效。 - 性能:减少 redirected JSON 和 terminal output 大小,并把 heavy imports 延迟到命令需要时。

修复与改进 - Electron:跟随重命名和 default-imported APIs、optional calls;忽略被覆盖身份和 media preload attributes;解析 packaged app.asar pages 和 unpacked companions。 - JavaScript data flow:保留 returned/yielded reference uncertainty;正确 invalidate property-stored aliases;保留 bundled-module runtime scope。 - JavaScript packages:解析 exact exports subpaths;保留 trailing-slash directory requests 和 exact CommonJS keys;尊重 shadowed require bindings。 - 大型 JS 输入:处理 oversized inline source maps、deep returns、reassignment loops;避免 argument expansion limits;在大分析 pass 中 yield。 - JS receivers:escaped methods 只展开一次;索引 returned-object targets;避免 replay earlier writes 或 duplicate retained graph allocations。 - 浏览器抓取/场景:保留 WebSocket URLs、empty connections 和 frame order;只比较 common known payload coverage;保留 incomplete WebMCP replay coverage;修正 storage partition、loopback attach identities、declared-secret redaction、Windows Electron verified lineage;新增 Termux Android browser-scenario support。 - Web 输入:接受 BOM-prefixed HAR;保留首个重复 DOM attribute;解析 HTML/XHTML 中的 SVG/XLink URLs。 - 截图比较:验证 PNG chunks;区分 corruption 与 unsupported encodings;限制比较内存。 - 归档:保留大小写不同名称;在 diverging segment 报告 collisions;从 bytes 检测嵌套格式;拒绝 Windows alternate-stream extraction paths。 - Cleanup/Providers:保留 failed readers、ASAR handles、output trees、provider workers 以便 retry;canonicalize IDA workspace roots;尊重 IDA cancellation;serialize JEB acquisition;修正 Ghidra no-return/imported-symbol recovery。 - 二进制元数据/兼容性:尊重 PE/.NET section extents;限制 binary-plist expansion;scope keyed-archive traversal;无需 plutil 解码 app Info.plist;支持 Node-API hosts、Wakaru 1.x;拒绝 directory-valued Hopper launchers。 - Setup/进程/CLI:honor active configuration 和 skill roots;保留 configured MCP environments;验证 Hermes/OMP profiles;识别 Omarchy;保留 recovery backups;保留 descendant lineage 和 identity uncertainty;CLI/MCP 接受 JSON files for web comparisons,保留 native option help、union correction details。

Breaking changes - WebSocket 结果:使用 network.websocket_connections 替代 network.websocket_events;connections 包含 request_id、url、events;大小未知时允许 payload_bytes: null;无 legacy alias。 - Direct resource APIs:inventory/extraction、JavaScript analysis、reference imports、web exports 需传入 caller-owned ArtifactResourceScope,并在 cleanup/shutdown 中保留;readJavaScriptArtifactFiles 中 scope 为第 3 个参数,abort signal 为第 4 个参数;每个 root inventory source 保持单一 cleanup owner;改用 OwnedFileHandle、注入 ASAR fd/read handles、VCS Result values、WebScriptExportError options object;CLI/MCP 输入不变。 - Saved reference graphs:exclusions 必须带匹配 pattern,并区分 project-ignored 与 default-ignored;缺少 provenance 的图需重新导入。 - Terminal captures:初始和 resized buffers 需保持在 1,000,000 cells 内,按 columns × (rows + scrollback) 计算;oversized scenarios 启动前拒绝。 - Optional agent-verification reports:接受 schema version 4、nullable expectedFirstTool 和 targetClarificationPassed;生产 CLI/MCP contracts 不变。 - Capture comparisons:使用 custom normalization patterns 时,需用匹配的 literal-replacements-v1 语义重新捕获两侧;旧 unversioned pattern captures 仍可读但不能与新 pattern captures 比较;无 patterns captures 不受影响。 - Artifact graph edges:child artifact IDs 和 paths 改为从 occurrence_id 选中的 occurrence 读取,不再用 edge fields child_artifact_id/logical_path;旧 inventory Evidence 不再验证。 - Semantic graph schema:nodes 和 relations 不再包含 identifier_strategy,relation IDs 也不再 hash 它;旧 Evidence 不再验证。 - Semantic identities:从 parent graph 选 IDs;exact event names 读 event_name,endpoints 读 endpoint,literal values 读 properties.value;新分析对 long/reserved event 和 endpoint names 用 digest-based IDs,literal role keys 用 value-sha256,标签更短;string literal label 现在为 string literal。旧存储图保留原 IDs,仍是有效 workflow 输入。

性能/资源数据 - Release Notes 未给出基准测试数字。可保留的资源约束包括:JavaScript 分析 heap/timeout 可配;terminal capture 上限 1,000,000 cells;截图比较限制内存;大型分析按需发现 Evidence;process capture 支持 finalization_ms;减少输出和延迟导入。 - 贡献规模:本版本包含 336 commits、163 merged PRs。

▸ Release Notes 英文原文(20150 字符)
## [6.4.0](https://github.com/morluto/rea/compare/rea-agents-6.3.0...rea-agents-6.4.0) (2026-10-11) ### Highlights - Android: added device inspection, split-APK acquisition, logs, screenshots, file transfers and explicit app lifecycle actions through ADB, plus manifest and localized-string decoding with Apktool. ([#1552](https://github.com/morluto/rea/pull/1552), [#1556](https://github.com/morluto/rea/pull/1556)) Thanks @3QL. - JEB: browse project units and decompile selected items through a caller-started local JEB MCP server. ([#1536](https://github.com/morluto/rea/pull/1536)) Thanks @3QL. - Large analyses: discover retained Evidence without loading every payload, and inspect JavaScript graphs, binary layouts and function dossiers through summaries and selected views. ([#1682](https://github.com/morluto/rea/pull/1682), [#1568](https://github.com/morluto/rea/pull/1568), [#1570](https://github.com/morluto/rea/pull/1570), [#1345](https://github.com/morluto/rea/pull/1345), [#1507](https://github.com/morluto/rea/pull/1507), [#1247](https://github.com/morluto/rea/issues/1247)) Thanks @jhuang-tw, @kaoru0822-kitauji, @N0zoM1z0. - JavaScript: isolate source analysis in an owned process with configurable heap and timeout limits; retain completed facts and explicit unknowns when analysis runs out of resources. ([#1651](https://github.com/morluto/rea/pull/1651), [#1563](https://github.com/morluto/rea/issues/1563), [#1565](https://github.com/morluto/rea/issues/1565)) Thanks @N0zoM1z0, @peter-research. - Ghidra: configure import language/compiler specifications and seed functions, code and labels before auto-analysis. ([#1667](https://github.com/morluto/rea/pull/1667)) Thanks @sqmagellan. - RPC discovery: recognize supported tRPC calls, HTTP-link URLs and named GraphQL operations in JavaScript applications and web bundles. ([#1670](https://github.com/morluto/rea/pull/1670)) Thanks @pompiliodonatoapp. ### Changes - Added Ghidra support for Windows PE DLLs and bounded MIPS ELF analysis, including carved MIPS inputs with incomplete section tables. Windows P0 remains read-only. ([#1303](https://github.com/morluto/rea/pull/1303), [#1362](https://github.com/morluto/rea/pull/1362), [#1629](https://github.com/morluto/rea/pull/1629), [#1290](https://github.com/morluto/rea/issues/1290), [#718](https://github.com/morluto/rea/issues/718), [#1619](https://github.com/morluto/rea/issues/1619)) Thanks @bqw371, @jaelliot, @kvalls, @N0zoM1z0. - Enabled `set_address_name` and `set_addresses_names` for Ghidra sessions with mutation authority, including namespace-aware data labels and per-address batch results. ([#1635](https://github.com/morluto/rea/pull/1635), [#1634](https://github.com/morluto/rea/issues/1634)) Thanks @giri256. - Recovered additional signed AArch64 relative jump-table patterns. ([#1592](https://github.com/morluto/rea/pull/1592)) Thanks @RishTheFish21. - Added PE resource inspection and read-only NativeAOT metadata parsing for supported x64 PE32+/.NET 8 RTR 9.1 inputs. The NativeAOT parser’s Windows-host Ghidra workflow remains unverified on a real Windows host. ([#1482](https://github.com/morluto/rea/pull/1482), [76d8f68](https://github.com/morluto/rea/commit/76d8f68cb918dfb43869f2b649a0b6c0c1cf266d), [#1254](https://github.com/morluto/rea/issues/1254)) Thanks @N0zoM1z0, @thangldw. - Added Pi, Hermes and Qwen Code setup, including Hermes active-profile support. ([#1376](https://github.com/morluto/rea/pull/1376), [#1403](https://github.com/morluto/rea/pull/1403), [#1415](https://github.com/morluto/rea/pull/1415), [#1409](https://github.com/morluto/rea/issues/1409)) Thanks @rasatpetabit, @yiliang114, @zaydiscold. - Added `REA_MCP_INPUT_SCHEMA_PROFILE=compact` for size-capped MCP clients such as Kimi/Moonshot, while retaining canonical runtime validation. ([#1514](https://github.com/morluto/rea/pull/1514), [#1580](https://github.com/morluto/rea/pull/1580), [#1484](https://github.com/morluto/rea/issues/1484), [#1581](https://github.com/morluto/rea/issues/1581)) Thanks @haythemsellami, @N0zoM1z0. - Added live process-capture progress and optional `finalization_ms` to capture shutdown output before timeout escalation; cancellation remains immediate. ([#1483](https://github.com/morluto/rea/pull/1483), [#1583](https://github.com/morluto/rea/pull/1583), [#1252](https://github.com/morluto/rea/issues/1252), [#1253](https://github.com/morluto/rea/issues/1253), [modelcontextprotocol/typescript-sdk#2997](https://github.com/modelcontextprotocol/typescript-sdk/issues/2997)) Thanks @N0zoM1z0, @nikolay-dementiev, @sathariels. - Improved Codex onboarding and recovery from observed client, PATH and provider blockers. ([#1613](https://github.com/morluto/rea/pull/1613)) Thanks @N0zoM1z0. - Reduced redirected JSON and terminal output size, and deferred heavy imports until their commands need them. ([#1413](https://github.com/morluto/rea/pull/1413), [#1450](https://github.com/morluto/rea/pull/1450), [#1439](https://github.com/morluto/rea/pull/1439), [21dbcf7](https://github.com/morluto/rea/commit/21dbcf7a1458219989ad291e44ce7d017378b727)) Thanks @kaoru0822-kitauji. ### Fixes - Electron analysis: follow renamed and default-imported APIs and optional calls, ignore overwritten identities and media preload attributes, and resolve packaged `app.asar` pages and unpacked companions. ([#1391](https://github.com/morluto/rea/pull/1391), [#1393](https://github.com/morluto/rea/pull/1393), [#1400](https://github.com/morluto/rea/pull/1400), [#1664](https://github.com/morluto/rea/pull/1664), [#1673](https://github.com/morluto/rea/pull/1673)) Thanks @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @suninrain086. - JavaScript data flow: preserve returned/yielded reference uncertainty, invalidate property-stored aliases correctly, and retain bundled-module runtime scope. ([#1437](https://github.com/morluto/rea/pull/1437), [#1445](https://github.com/morluto/rea/pull/1445), [#1471](https://github.com/morluto/rea/pull/1471), [#1577](https://github.com/morluto/rea/pull/1577), [#1428](https://github.com/morluto/rea/issues/1428), [#1442](https://github.com/morluto/rea/issues/1442), [#1449](https://github.com/morluto/rea/issues/1449), [#1576](https://github.com/morluto/rea/issues/1576)) Thanks @CassieFox23, @dakjdakd, @N0zoM1z0. - JavaScript packages: resolve exact exports subpaths, preserve trailing-slash directory requests and exact CommonJS keys, and respect shadowed `require` bindings. ([#1424](https://github.com/morluto/rea/pull/1424), [#1615](https://github.com/morluto/rea/pull/1615), [5485483](https://github.com/morluto/rea/commit/5485483f7da2f6cb66441bb784aaf2a1a5f8731a), [8b2f851](https://github.com/morluto/rea/commit/8b2f8514c50e469c3add8ce9ba7ebebef888b14f), [f998fcb](https://github.com/morluto/rea/commit/f998fcb1cca9994c3589fb70d6e0127fc215f76f), [1e51c73](https://github.com/morluto/rea/commit/1e51c732bbf08191688d6526bf58ab2650b601e3), [#1365](https://github.com/morluto/rea/issues/1365)) Thanks @akshitkhokhani, @AWUQAQ, @immanuwell, @rudycelekli. - Large JavaScript inputs: handle oversized inline source maps, deep returns and reassignment loops; avoid argument expansion limits and yield during large analysis passes. ([#1386](https://github.com/morluto/rea/pull/1386), [#1368](https://github.com/morluto/rea/pull/1368), [#1390](https://github.com/morluto/rea/pull/1390), [#1539](https://github.com/morluto/rea/pull/1539), [#1525](https://github.com/morluto/rea/pull/1525), [#1542](https://github.com/morluto/rea/pull/1542), [#1545](https://github.com/morluto/rea/pull/1545), [#1557](https://github.com/morluto/rea/pull/1557), [#1380](https://github.com/morluto/rea/issues/1380), [#1401](https://github.com/morluto/rea/issues/1401), [#1538](https://github.com/morluto/rea/issues/1538), [#1462](https://github.com/morluto/rea/issues/1462)) Thanks @cold-atom, @KadirJeager, @kaoru0822-kitauji, @marnixpluim, @N0zoM1z0, @rudycelekli. - JavaScript receivers: expand escaped methods once, index returned-object targets, and avoid replaying earlier writes or duplicating retained graph allocations. ([#1517](https://github.com/morluto/rea/pull/1517), [#1537](https://github.com/morluto/rea/pull/1537), [#1444](https://github.com/morluto/rea/pull/1444), [#1601](https://github.com/morluto/rea/pull/1601), [#1495](https://github.com/morluto/rea/issues/1495)) Thanks @CassieFox23, @geekwolf, @kaoru0822-kitauji, @N0zoM1z0, @zeynelacikgoez. - Browser captures: retain WebSocket URLs, empty connections and frame order; compare only common known payload coverage and preserve incomplete WebMCP replay coverage. ([db4e360](https://github.com/morluto/rea/commit/db4e3608465486466591b594cf77037ac150c988), [aa257ea](https://github.com/morluto/rea/commit/aa257ea4b16f2d2a35c12df63359d650b48b1154), [e52c0a7](https://github.com/morluto/rea/commit/e52c0a72c59c740315e89149881a27ce4d89a11c)) - Browser scenarios: seed storage in the correct partition, normalize loopback attach identities, retain declared-secret redaction and require verified lineage before Windows Electron signals. ([#1604](https://github.com/morluto/rea/pull/1604), [#1590](https://github.com/morluto/rea/pull/1590), [#1588](https://github.com/morluto/rea/pull/1588), [8b4c3de](https://github.com/morluto/rea/commit/8b4c3de3b3a3b580adec266f94f29ccedf1da228), [#1497](https://github.com/morluto/rea/issues/1497), [#1591](https://github.com/morluto/rea/issues/1591), [#1589](https://github.com/morluto/rea/issues/1589)) Thanks @Adolanium, @akushonkamen, @dakjdakd. - Added Termux Android browser-scenario support. ([#1655](https://github.com/morluto/rea/pull/1655)) Thanks @tyloryang. - Web inputs: accept BOM-prefixed HAR, preserve the first duplicate DOM attribute and resolve SVG/XLink URLs in HTML and XHTML. ([#1509](https://github.com/morluto/rea/pull/1509), [#1516](https://github.com/morluto/rea/pull/1516), [#1602](https://github.com/morluto/rea/pull/1602), [#1683](https://github.com/morluto/rea/pull/1683), [#1496](https://github.com/morluto/rea/issues/1496), [#1586](https://github.com/morluto/rea/issues/1586)) Thanks @CassieFox23, @kaoru0822-kitauji, @sathariels, @taljeri. - Screenshot comparisons: validate PNG chunks, distinguish corruption from unsupported encodings and bound comparison memory. ([4e4b15b](https://github.com/morluto/rea/commit/4e4b15b8250b29e176d4191c9610a3931b693474), [b3e977e](https://github.com/morluto/rea/commit/b3e977e6d073ab1783cece8581279f87fc360411)) Thanks @rudycelekli. - Archives: preserve case-distinct names, report collisions at their diverging segment, detect nested formats from bytes and reject Windows alternate-stream extraction paths. ([#1480](https://github.com/morluto/rea/pull/1480), [#1505](https://github.com/morluto/rea/pull/1505), [#1553](https://github.com/morluto/rea/pull/1553), [573598c](https://github.com/morluto/rea/commit/573598c6324698cc48ceafd24ed3864670e08d00), [#1470](https://github.com/morluto/rea/issues/1470), [#1491](https://github.com/morluto/rea/issues/1491)) Thanks @CassieFox23, @kaoru0822-kitauji. - Cleanup: retain failed readers, ASAR handles, output trees and provider workers for retry without discarding completed output or partial observations. ([ffe0574](https://github.com/morluto/rea/commit/ffe0574e17b9d973860371083cb1a351be912131), [de0d341](https://github.com/morluto/rea/commit/de0d341524dc68250a45b41eb7e49fcecc1e32a9), [3f8c51e](https://github.com/morluto/rea/commit/3f8c51e9b506d88fc41aded7b1a22b9a09037c26), [d1235fa](https://github.com/morluto/rea/commit/d1235fadc901e1fb9ab3149d53063306c8545414), [026126e](https://github.com/morluto/rea/commit/026126eafe741e5a8b857433587fd615cdd44c19)) - Providers: canonicalize IDA workspace roots before identity checks, respect IDA cancellation, serialize JEB acquisition and correct Ghidra no-return/imported-symbol recovery. ([#1481](https://github.com/morluto/rea/pull/1481), [#1419](https://github.com/morluto/rea/pull/1419), [5f30ea6](https://github.com/morluto/rea/commit/5f30ea6ff2dd89aab7af6da6e8dfa5e508ed459b), [f88c990](https://github.com/morluto/rea/commit/f88c99021b88ce67e513025901f57478d8107d0c), [49e6f00](https://github.com/morluto/rea/commit/49e6f00ed08b225abf9ddb7c762553607fdab115)) Thanks @AS9929, @JonahSimon, @Y0UW1SH. - Binary metadata: respect PE/.NET section extents, bound binary-plist expansion, scope keyed-archive traversal and decode app `Info.plist` files without `plutil`. ([#1678](https://github.com/morluto/rea/pull/1678), [#1515](https://github.com/morluto/rea/pull/1515), [#1378](https://github.com/morluto/rea/pull/1378), [#1476](https://github.com/morluto/rea/pull/1476), [975dff2](https://github.com/morluto/rea/commit/975dff2e25b14b634e14dd5e0db1537d0ca9815b), [76296c5](https://github.com/morluto/rea/commit/76296c5a3868ba3b54be6ed3896719283d6de5f8)) Thanks @jayhemnani9910, @kaoru0822-kitauji, @rudycelekli. - Windows runtimes: preserve drive-root paths when creating private provider directories. ([ee46323](https://github.com/morluto/rea/commit/ee46323b493994902b04824a7dc8aae2a8117903)) - Compatibility: load Windows native controls under Node-API hosts with renamed executables, preserve dylib directory requirements, support Wakaru 1.x and reject directory-valued Hopper launchers. ([#1531](https://github.com/morluto/rea/pull/1531), [#1623](https://github.com/morluto/rea/pull/1623), [#1540](https://github.com/morluto/rea/pull/1540), [#1426](https://github.com/morluto/rea/pull/1426)) Thanks @evenafterallisaid, @Fazmin, @pionxzh, @xeropresence. - Reference imports: normalize internal symlink lookup consistently, preserve exact paths and exclusion provenance, report root access failures and reject FIFO replacements without blocking. ([#1535](https://github.com/morluto/rea/pull/1535), [2ca3ad2](https://github.com/morluto/rea/commit/2ca3ad238608adfca80a7ff1aaadea6e59a58225), [6636045](https://github.com/morluto/rea/commit/6636045c9c5b472bba51afee9d434394861e93a4), [3967cfa](https://github.com/morluto/rea/commit/3967cfa43e786c65a57e89c265343983d19ef9d0), [f1c58cc](https://github.com/morluto/rea/commit/f1c58cc53fbd83b968e11b3e2eccebca51299c54)) Thanks @anujsingh-cse. - Setup: honor active configuration and skill roots, preserve configured MCP environments, validate Hermes/OMP profiles before writing, recognize Omarchy and retain recovery backups. ([#1504](https://github.com/morluto/rea/pull/1504), [#1607](https://github.com/morluto/rea/pull/1607), [#1528](https://github.com/morluto/rea/pull/1528), [#1562](https://github.com/morluto/rea/pull/1562), [#1662](https://github.com/morluto/rea/pull/1662), [a011485](https://github.com/morluto/rea/commit/a01148553e2a37c72ae78405418ab648876a96a6), [#1606](https://github.com/morluto/rea/issues/1606), [#1521](https://github.com/morluto/rea/issues/1521), [#1561](https://github.com/morluto/rea/issues/1561)) Thanks @Adkid-Zephyr, @CassieFox23, @LuisTaffelli, @N0zoM1z0, @peter-research. - Process capture: retain descendant lineage after launcher exit, preserve identity uncertainty before signaling and release terminals after observation failures. ([80896a1](https://github.com/morluto/rea/commit/80896a1d64b216ef893907249cd4252f86215d49), [c916850](https://github.com/morluto/rea/commit/c9168508527302ac57bc86385ccf0d824697b5dc)) Thanks @Y0UW1SH. - CLI/MCP errors: accept JSON files for web comparisons, preserve native option help and union correction details, remove invalid aliases and validate doctor against its discovered output contract. ([#1397](https://github.com/morluto/rea/pull/1397), [#1395](https://github.com/morluto/rea/pull/1395), [#1425](https://github.com/morluto/rea/pull/1425), [#1461](https://github.com/morluto/rea/pull/1461), [8b4c96e](https://github.com/morluto/rea/commit/8b4c96e6c6b3ed6806e4cd72b556b5db6114304a), [#1421](https://github.com/morluto/rea/issues/1421), [#1454](https://github.com/morluto/rea/issues/1454)) Thanks @Fazmin, @kaoru0822-kitauji, @N0zoM1z0. ### ⚠ BREAKING CHANGES - WebSocket results: use `network.websocket_connections` instead of `network.websocket_events`. Connections contain `request_id`, `url` and `events`; allow `payload_bytes: null` when size is unknown. No legacy alias remains. ([db4e360](https://github.com/morluto/rea/commit/db4e3608465486466591b594cf77037ac150c988)) - Direct resource APIs: pass a caller-owned `ArtifactResourceScope` to inventory/extraction, JavaScript analysis, reference imports and web exports; retain it through cleanup/shutdown. For `readJavaScriptArtifactFiles`, scope is argument three and abort signal is argument four. Keep each root inventory source’s single cleanup owner. Use `OwnedFileHandle` owners, injected ASAR `fd`/`read` handles instead of `createReadStream`, VCS `Result` values, and `WebScriptExportError`’s options object. CLI/MCP inputs for the scoped operations are unchanged. ([ffe0574](https://github.com/morluto/rea/commit/ffe0574e17b9d973860371083cb1a351be912131), [53e7fad](https://github.com/morluto/rea/commit/53e7fadbd078422ba3d55b5499a70d237c5f4908), [684199b](https://github.com/morluto/rea/commit/684199ba0be7822266d57ddb8a40e95f087fdc42), [be75ed5](https://github.com/morluto/rea/commit/be75ed5e4b4bfb146af497f8fa5d172a1ea19462), [be6272f](https://github.com/morluto/rea/commit/be6272f26115bd8e94f2ab0df4cf092004587a18), [e0e49e9](https://github.com/morluto/rea/commit/e0e49e9dd53d9d1f1d2330b23f7f880dc1c81774), [95a77b6](https://github.com/morluto/rea/commit/95a77b6e25420b3879bd0e32bdbb14d452b38776)) - Saved reference graphs: exclusions require their matching `pattern` and distinguish `project-ignored` from `default-ignored`. Re-import graphs missing that provenance. ([6585293](https://github.com/morluto/rea/commit/6585293c562853b95c3a70df02c12ad8cc17afc4)) - Terminal captures: keep initial and resized buffers within 1,000,000 cells using `columns × (rows + scrollback)`; oversized scenarios are rejected before launch. ([f9ea9a9](https://github.com/morluto/rea/commit/f9ea9a9268c854d31048da9f8a50cfa37703fe5a)) - Optional agent-verification reports: accept schema version 4, nullable `expectedFirstTool` and `targetClarificationPassed`. Production CLI/MCP contracts are unchanged. ([#1613](https://github.com/morluto/rea/pull/1613)) - Capture comparisons: recapture both sides with matching `literal-replacements-v1` semantics when custom normalization patterns are used. Legacy unversioned pattern captures remain readable but cannot be compared with new pattern captures; captures without patterns are unaffected. ([#1456](https://github.com/morluto/rea/pull/1456), [2b6f14f](https://github.com/morluto/rea/commit/2b6f14f528297cf12c776c960af0859f5cfbefbf)) Thanks @Madhavan006, @N0zoM1z0. - Artifact graph edges: read child artifact IDs and paths from the occurrence selected by `occurrence_id`, not edge fields `child_artifact_id`/`logical_path`. Earlier inventory Evidence no longer validates against the new commitment. ([#1493](https://github.com/morluto/rea/pull/1493)) Thanks @kaoru0822-kitauji. - Semantic graph schema: nodes and relations no longer include `identifier_strategy`, and relation IDs no longer hash it. Earlier Evidence no longer validates against this schema. ([#1474](https://github.com/morluto/rea/pull/1474)) Thanks @kaoru0822-kitauji. - Semantic identities: select IDs from the parent graph; read exact event names from `event_name`, endpoints from `endpoint` and literal values from `properties.value`. New analyses use digest-based IDs for long/reserved event and endpoint names and `value-sha256` literal role keys, with shorter labels; string literal labels now read `string literal`. Previously stored graphs retain their original IDs and remain valid workflow inputs. ([#1427](https://github.com/morluto/rea/pull/1427), [#1423](https://github.com/morluto/rea/pull/1423), [#1407](https://github.com/morluto/rea/pull/1407)) Thanks @N0zoM1z0. ### Contributors - Thanks also to @BaaRai, @commit-regrets, @coygeek, @Franky100-pig, @inii-sayaa, @jopemachine, @JosephDemarest, @keemsisi, @Totopo27 for contributions included in this release. Full contribution record: [336 commits and 163 merged PRs](https://github.com/morluto/rea/blob/rea-agents-6.4.0/docs/releases/6.4.0.contributions.json).
▸ 主项目介绍 · morluto/rea
▸ README 原文(同步于 2026-10-13 17:17)
<div align="center"> **English** · [简体中文](docs/readme/README_zh.md) · [繁體中文](docs/readme/README_zh-TW.md) · [日本語](docs/readme/README_ja.md) · [한국어](docs/readme/README_ko.md) · [Türkçe](docs/readme/README_tr.md) · [Русский](docs/readme/README_ru.md) · [Tiếng Việt](docs/readme/README_vi.md) · [ไทย](docs/readme/README_th.md) · [Deutsch](docs/readme/README_de.md) · [Español](docs/readme/README_es.md) · [Français](docs/readme/README_fr.md) · [Українська](docs/readme/README_uk.md) · [Polski](docs/readme/README_pl.md) · [Português (Brasil)](docs/readme/README_pt-BR.md) · [العربية](docs/readme/README_ar.md) · [فارسی](docs/readme/README_fa.md) · [Bahasa Indonesia](docs/readme/README_id.md) · [Italiano](docs/readme/README_it.md) # REA: Reverse Engineer Anything ### One MCP for reverse engineering across binaries, applications, and runtime behavior. **See a feature you like. Understand how it works, down to the binary level.** [![npm version](https://img.shields.io/npm/v/rea-agents?style=flat-square&color=cb3837)](https://www.npmjs.com/package/rea-agents) [![MCP tool catalog](https://img.shields.io/badge/MCP-tool_catalog-5c4ee5?style=flat-square)](docs/mcp-contracts.md#generated-catalog) [![Node.js requirements](https://img.shields.io/badge/Node.js-requirements-339933?style=flat-square&logo=nodedotjs&logoColor=white)](#what-you-can-analyze) [![skills.sh](https://skills.sh/b/morluto/rea?style=flat-square)](https://skills.sh/morluto/rea/reverse-engineer-anything) [![MIT license](https://img.shields.io/badge/license-MIT-f4c430?style=flat-square)](LICENSE) [![Discord](https://img.shields.io/discord/1556595354999332884?logo=discord&logoColor=white&label=Discord&color=5865F2)](https://discord.gg/GkcryMnJDM) <a href="https://trendshift.io/repositories/82054?utm_source=repository-badge&amp;utm_medium=badge&amp;utm_campaign=badge-repository-82054" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/repositories/82054" alt="morluto%2Frea | Trendshift" width="250" height="55"/></a> **[Website](https://rea.tools/) · [Guides](https://rea.tools/guides/) · [Showcases](https://rea.tools/showcase/)** [Quick start](#quick-start) · [How REA works](#how-rea-works) · [What you can analyze](#what-you-can-analyze) · [Showcases](#showcases) · [FAQ](#faq) · [Documentation](#documentation) <code>npx rea-agents setup</code> <br /> <img src="docs/assets/rea-hopper-analysis.png" alt="REA launching its analysis bridge inside Hopper while inspecting a native binary" width="1200" /> <br /><br /> <table aria-label="REA community"> <tr> <td align="center" width="360"> <a href="https://discord.gg/GkcryMnJDM"> <img src="docs/assets/discord.svg" height="42" alt="Discord" /><br /> <strong>Join the Reverse Engineering Community</strong> </a><br /> <sub>Discord · Q&amp;A · Show and Tell</sub> </td> </tr> </table> <br /> </div> --- See a feature in an app that you want in your own product? Ask your agent to investigate it with REA. It can inspect the app without its source code, explain how the feature works, show the evidence, and build a version for your project. REA connects your agent to tools for inspecting native binaries, JavaScript and Electron apps, .NET assemblies, and websites. You can also use the same tools from your terminal. Analysis runs locally, and results include the evidence and limitations behind each conclusion. Setup registers REA with your agent and installs matching workflow instructions. Native analysis can use an existing Hopper, Ghidra, or IDA installation; setup can optionally install Hopper with approval. Static JavaScript analysis needs no native analysis engine. > **[Visit the REA website](https://rea.tools/)** for setup instructions, illustrated guides, and real case studies. ## Quick start ### Set up your agent With Node.js and npm installed, run: ```bash npx rea-agents setup ``` Choose your agents, review the proposed changes, and approve them. Setup adds REA's MCP server and matching workflow instructions, with backups of existing configuration. Restart your agent afterward. Setup supports Claude Code, Codex, Cursor, Gemini CLI, Grok Build and [other agents](docs/installation.md#supported-agents). See [installation and setup](docs/installation.md) for provider configuration and manual MCP registration. ### Ask your agent ```text Understand how search works in the Notes app, show me the evidence, and build a similar feature for my project. ``` Replace Notes with your target app and the feature you want to understand. ### Use the terminal Inspect an extracted JavaScript/Electron app directory or ASAR: ```bash npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json ``` The result includes modules, imports, Electron boundaries and their evidence. Replace the path with your target, such as `"D:/apps/example"` on Windows. To install the `rea` command for regular use: ```bash npm install --global rea-agents rea --help ``` For native analysis, configure a provider first. See the [CLI and Evidence guide](docs/cli.md) for native commands, provider selection, snapshots and scripting. ### Update REA REA changes quickly, and new releases include frequent bug fixes. Keep your installation up to date. For a CLI installed with `npm install --global` or `bun add --global`: ```bash rea update ``` Bun global updates require Bun 1.2.17 or later. With an older Bun release, upgrade Bun manually before running `rea update`. To refresh your agent registrations and skill, run the setup command printed by the update. If you use `npx`, update your agent setup with: ```bash npx rea-agents@latest setup ``` Review the setup changes and restart your agent. For one-off CLI commands, use `npx rea-agents@latest` followed by the command. With Bun, use `bunx rea-agents@latest` in place of `npx rea-agents@latest`. ## How REA works Your agent calls REA through MCP to inspect the target and trace relevant code. REA returns findings with their evidence. The agent uses them to ask follow-up questions, explain the behavior, or write and test an implementation. CLI commands use the same workflows. ![REA investigation flow: your agent asks about a local target, REA inspects and traces it using analysis tools, and the agent uses the returned code, references and unknowns to explain, implement and test.](website/public/assets/figures/rea-investigation-flow.svg) [Open the full-size figure](website/public/assets/figures/rea-investigation-flow.svg). <a id="current-status"></a> ## What you can analyze REA requires Node.js 22.x (>=22.19), 24.x (>=24.11), or 26+, plus npm. Additional tools and host support depend on the target: | Target | What REA returns | Requirements and guide | | ---------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- | | Native binaries | Pseudocode, assembly, strings, symbols, calls and references | Hopper, Ghidra or IDA; [native analysis](https://rea.tools/guides/native/) | | Offline ELF layout | Sections, segments, original symbols/relocations and static mitigation candidates | Caller-supplied pwntools on Linux x64; [binary diagnostics](docs/binary-diagnostics.md) | | Go binaries | Embedded compiler version, modules, replacements and build settings | Built-in static ELF/PE/thin Mach-O inspection; no Go installation required | | WASM artifact | Validation, sections, exact import/export WAT forms and decoded WAT | Caller-supplied WABT 1.0.42; `inspect_wasm_artifact` | | EVM bytecode | Dispatch selectors, byte offsets, inferred arguments and mutability | Local raw/hex carrier on Linux x64; [offline EVM guide](docs/evm-bytecode.md) | | SQLite databases | Tables, columns, indexes, views, triggers and selected ordinary-table rows | Local database/WAL snapshot; Node.js 24.x >=24.15 or 26+ with native SQLite limits | | Recorded Linux crashes | Raw notes, every recorded thread's registers/signals and optional mapping candidates | Caller-supplied pwntools on Linux x64; optional GDB/pwndbg; [recorded crashes](docs/recorded-crashes.md) | | JavaScript / Electron | Modules, imports, source maps, routes, IPC and native add-on relationships | Node.js and npm; [application analysis](https://rea.tools/guides/javascript/) | | Websites | Page structure, scripts, network observations and requested screenshots | A Chrome-family browser; [browser analysis](https://rea.tools/guides/browser/) | | Saved network captures | Requests, responses, exposed payloads and source locations | HAR or Fiddler Everywhere SAZ; mitmdump on Linux for native mitmproxy; [capture guide](docs/web-network-captures.md) | | .NET assemblies | Metadata, CIL instructions, declared native dependencies and build comparisons | None (static only); [managed-code guide](docs/managed-code-analysis.md) | | Android APKs | Manifest declarations, classes, decompiled methods and references | Headless JADX and a full JDK on Linux/macOS/Windows x64; [Android guide](docs/android-analysis.md) | | Android devices | Devices, packages, processes, logs, dumps, screen captures, and APK/file transfers | Caller-supplied adb (emulator or hardware); [ADB guide](docs/adb-device-analysis.md) | | JEB projects | Engine-backed project units, artifact digests and type/method pseudo-code | A caller-started JEB client serving MCP, selected with REA_JEB_MCP_URL; [JEB guide](docs/jeb-analysis.md) | | Android resources | Decoded manifest, string tables, locales and version facts | Caller-supplied Apktool launcher; [resource guide](docs/apktool-resource-analysis.md) | | Flutter apps | Dart snapshot hash, per-ABI library digests and engine build provenance | None (static APK parsing); [Flutter guide](docs/flutter-analysis.md) | | Firmware | Regions, extraction results and native-analysis handoffs | Binwalk / Unblob on Linux; [firmware guide](docs/firmware-analysis.md) | | Recorded packets | Selected fields, repeated values, filters and decode-as rules | Linux: TShark 4.x + prlimit; [capture guide](docs/packet-captures.md) | | Packet summaries | Endpoints, DNS, TLS SNI, protocol distribution and HTTP requests | Caller-supplied tshark and capinfos (Linux-verified); [pcap guide](docs/pcap-analysis.md) | | Recorded logic signals | Decoder annotations, sample ranges and diagnostics | Linux: sigrok-cli 0.7.2 + prlimit; [signal recordings](docs/signal-recordings.md) | | Packages and resources | File inventories, digests, plists, Apple bundle anatomy and extracted resources | [Artifact and JavaScript guide](docs/javascript-artifact-reconstruction.md), [Apple applications](docs/apple-application-analysis.md) | | Process behavior | Terminal output, interactions, exit and filesystem observations, and run comparisons | Linux/macOS with a native PTY; [process capture](docs/process-capture.md) | Static JavaScript and .NET inspection read the supplied files without running the application. Runtime capture runs or interacts with the selected target using your user permissions; each runtime guide describes its effects. <a id="choosing-a-deep-analysis-provider"></a> Native formats and host support vary by provider. See [Hopper and Ghidra setup](docs/installation.md#hopper), the [IDA guide](docs/ida-provider.md) (including an optional native MCP bridge), and [experimental Windows Ghidra support](docs/windows-ghidra-p0.md). Ghidra also supports [16-bit DOS analysis](docs/ghidra-dos.md). For large binaries, raise the provider's startup deadline with `REA_GHIDRA_STARTUP_TIMEOUT_MS` or `REA_HOPPER_STARTUP_TIMEOUT_MS`. For provider selection, see the [CLI guide](docs/cli.md#choose-a-provider). Check [release availability](docs/installation.md#released-package-and-main) for features added since the latest npm release. ## Showcases [![Illustrations of the DX-Ball sound-pan, Notion clipboard-bridge, and TH04 bullet-ring showcases](docs/assets/rea-showcases.png)](https://rea.tools/showcase/) ### DX-Ball: reconstruct a sound-pan calculation Follow a sound call into its position-to-pan helper, inspect the instructions, and turn incomplete pseudocode into C. The reconstruction passes 3,205 original-x86 cases and reproduces all 63 compiled function bytes. [Read the case study](https://rea.tools/showcase/dx-ball/) · [Reconstruction repository](https://github.com/N0zoM1z0/dx-ball) ### Notion: trace the Electron clipboard bridge Find the renderer's clipboard API, follow it through preload and IPC into the main process, and inspect the rich clipboard format. [Read the case study](https://rea.tools/showcase/notion/) ### TH04: recover a DOS bullet-ring calculation Inspect the original PC-98 game's 16-bit instructions, recover the fixed and aimed angle calculations, and compare the reconstructed C++ with the historical compiler output. [Read the case study](https://rea.tools/showcase/th04/) · [Reconstruction repository](https://github.com/N0zoM1z0/th04) If you've used REA on something interesting, we'd love to see it. Share your case in an [issue](https://github.com/morluto/rea/issues) or a [pull request](https://github.com/morluto/rea/pulls), including the target, your question, how REA helped, and what you found. ## FAQ <details> <summary><strong>Which agents can use REA?</strong></summary> Any agent that supports local MCP servers. Setup configures the [supported agents](docs/installation.md#supported-agents); other clients can use [manual MCP registration](docs/installation.md#mcp-registry). </details> <details> <summary><strong>Do I need Hopper, Ghidra or IDA?</strong></summary> Deep native analysis uses one of them. Static JavaScript and .NET inspection work without a native analysis engine. Setup can install Hopper after approval; Ghidra and IDA use your existing installations. See [provider setup](docs/installation.md#hopper). </details> <details> <summary><strong>Do I need to start Hopper first?</strong></summary> REA starts Hopper when an operation needs it. On macOS, a first-run dialog may ask you to choose demo mode or activate your license. Complete that prompt in the same user session before your first CLI/MCP operation or unattended job. Open Hopper manually if needed. See [Hopper startup and troubleshooting](docs/installation.md#launcher-paths-and-troubleshooting). </details> <details> <summary><strong>What does installing the skill from skills.sh do?</strong></summary> The skill supplies investigation instructions for your agent. Use `npx rea-agents setup` to register REA's MCP server and install the matching instructions, then restart your agent. See [skill-only installation](docs/installation.md#skill-only-installation). </details> <details> <summary><strong>What code does REA return?</strong></summary> Native analysis returns pseudocode and assembly. JavaScript/Electron analysis recovers modules and their relationships. Your agent uses these findings to write and test an implementation; the [showcases](#showcases) give worked examples. </details> <details> <summary><strong>Does REA upload my app?</strong></summary> REA analyzes targets locally. Your agent receives the tool results, and its model provider has its own data policy. </details> <details> <summary><strong>What should I do if I hit a bug?</strong></summary> Update first; a recent release may already fix it. For a CLI installed with `npm install --global` or `bun add --global`: ```bash rea update ``` For agent setup through `npx`: ```bash npx rea-agents@latest setup ``` If you're using an agent, complete the [setup refresh](#update-rea) and restart it. Retry the same task. If the problem persists, [open an issue](https://github.com/morluto/rea/issues) with your REA version, target type, steps to reproduce and error output. </details> ## Documentation Start with the website's [worked guides](https://rea.tools/guides/). For exact options, prerequisites and result contracts: - [Installation and setup](docs/installation.md): agent registration, provider configuration, updates and uninstall. - [Readiness and troubleshooting](docs/installation.md#check-readiness-for-your-task): diagnose one agent or analysis engine. - [CLI and Evidence](docs/cli.md): commands, provider selection, snapshots, import/export and exit statuses. - [MCP contracts](docs/mcp-contracts.md) and [agent prompts](docs/mcp-prompts.md): tool results, sessions and guided investigations. - [Tool catalog](docs/mcp-contracts.md#generated-catalog): generated inventory of tools, providers and CLI commands. - [Roadmap](docs/roadmap.md): planned work and capability trackers. Report vulnerabilities through [SECURITY.md](SECURITY.md). ## Star history 🎉 **180,000 GitHub stars — thank you!** Thanks to everyone using REA, reporting bugs, requesting features, testing builds, and contributing fixes. <a href="https://www.star-history.com/?repos=morluto%2Frea&amp;type=date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=morluto/rea&amp;type=date&amp;theme=dark&amp;legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=morluto/rea&amp;type=date" /> <img alt="REA GitHub star history" src="https://api.star-history.com/chart?repos=morluto/rea&amp;type=date" /> </picture> </a> ## Disclaimer See [DISCLAIMER.md](DISCLAIMER.md) for responsible-use guidance. The project's position on illegal or unauthorized use covers all REA versions, distribution channels, and platforms; each copy retains its applicable licenses. REA is for lawful research, education, interoperability, software preservation, and analysis of software you own or are authorized to examine. ## Contributing We'd love your help with REA! [Open an issue](https://github.com/morluto/rea/issues) to report a bug or suggest a feature, or [send a pull request](https://github.com/morluto/rea/pulls) to improve the code or docs. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and checks, [testing](docs/testing.md) for verification lanes, and the [architecture map](docs/architecture.mermaid) for the project structure. ## License [MIT](LICENSE) REA-authored code is licensed under MIT. Third-party material retains its own licenses and copyright notices; see [Third-party notices](THIRD_PARTY_NOTICES.md) for the dependency inventory, preserved license texts, and external-tool terms. **You must legally obtain and be authorized to use commercial tools**, including IDA Pro / Hex-Rays decompilers, Hopper, and JEB, under their applicable licenses. REA grants no tool license, key, or activation entitlement. Trials and demos remain subject to vendor terms, including user, feature, automation, and output sharing restrictions. Cracked copies, stolen keys, unauthorized key sharing, and bypassing license restrictions are not authorized. This guidance does not amend MIT or third-party licenses.
▸ 中文总结(生成于 2026-10-20 04:10)

morluto/rea 项目介绍

REA(Reverse Engineer Anything)是一个面向 AI 智能体的逆向工程工具项目,旨在通过统一的 MCP 接口,让智能体分析应用功能、代码结构、原生二进制文件和运行时行为。

它的典型使用方式是:你看到某个应用中的功能,希望理解其实现,即可让智能体借助 REA 调查相关代码、展示证据,并进一步为自己的项目编写和测试类似功能。

一、项目基本信息

项目 内容
GitHub 仓库 morluto/rea
主要语言 TypeScript
npm 包 rea-agents
交互方式 MCP、命令行 CLI
适配的智能体 Claude Code、Codex、Cursor、Gemini CLI、Grok Build 等
开源许可证 REA 自有代码采用 MIT,第三方材料保留各自许可证
官方网站 rea.tools

二、它解决什么问题

理解一个没有源代码的应用,往往需要结合反编译器、文件分析工具、浏览器观察和运行行为记录。不同目标需要不同工具,调查结果也需要进一步串联,才能解释某项功能如何工作。

REA 将这些分析能力接入智能体,使用户可以围绕具体问题发起调查,例如:

理解 Notes 应用的搜索功能如何工作,展示证据,并为我的项目实现类似功能。

围绕这个目标,REA 提供三方面能力:

  • 检查目标材料:读取二进制文件、应用包、程序集、网页、网络记录等,提取可用于分析的信息。
  • 追踪实现关系:查找调用、引用、模块依赖、Electron IPC 等关联,帮助智能体沿着线索继续调查。
  • 返回可核查的结果:提供代码、引用、观察记录及结论的局限,供智能体解释功能或编写实现。

REA 在本地执行分析。工具结果会交给智能体,其模型服务商如何处理这些数据,仍取决于该服务商的数据政策。

三、核心技术架构与实现思路

1. 通过 MCP 连接智能体和分析工具

README 描述的调查流程可以概括为:

用户提出问题 → 智能体调用 REA → REA 使用分析工具检查目标 → 返回代码、引用、证据及未知项 → 智能体继续调查、解释、实现和测试。

其中各部分承担的职责是:

层次 职责
智能体 理解用户目标、提出后续问题、解释结果,以及编写和测试实现
REA 提供 MCP 工具与分析工作流,组织分析调用并返回结果
底层分析工具 执行反编译、反汇编、浏览器观察、设备交互或其他目标分析

CLI 使用相同的工作流,因此这些能力也可以从终端直接调用,用于脚本和命令行操作。

2. 按目标接入不同分析后端

深入分析原生二进制时,REA 使用现有的 Hopper、Ghidra 或 IDA 安装,返回伪代码、汇编、字符串、符号、调用和引用等信息。具体格式及宿主平台支持取决于所选后端。

部分分析则不依赖这些原生分析引擎:

  • JavaScript / Electron 静态分析读取模块、导入、源码映射及应用边界。
  • .NET 静态分析读取元数据、CIL 指令和声明的原生依赖。
  • Go 二进制检查可提取嵌入的编译器版本、模块及构建设置,无需安装 Go。
  • Flutter APK 静态解析可提取 Dart 快照哈希、不同 ABI 的库摘要和引擎构建来源。

其他目标按需使用 JADX、adb、Apktool、WABT、TShark、Binwalk 等工具。因此,REA 的运行依赖会随分析对象变化。

3. 区分静态检查和运行时观察

JavaScript 与 .NET 的静态检查直接读取用户提供的文件,不运行应用。

运行时捕获则会以当前用户权限启动目标或与目标交互,记录终端输出、交互、退出状态和文件系统观察等信息。静态结构与运行行为分别为调查提供证据。

四、主要分析能力

分析对象 主要输出或用途
原生二进制、ELF、Go 二进制 伪代码、汇编、调用引用、文件布局、符号、重定位和构建信息
JavaScript / Electron 应用 模块、导入、源码映射、路由、IPC 及原生扩展关联
.NET 程序集 元数据、CIL 指令、原生依赖声明及构建比较
网站 页面结构、脚本、网络观察和按需截图
Android APK 与设备 Manifest、类、反编译方法、引用,以及设备日志、进程、截图和文件传输
Flutter 应用、Android 资源、JEB 项目 构建来源、资源信息,以及由 JEB 引擎提供的项目单元和伪代码
WASM、EVM 字节码 WASM 校验与 WAT;EVM 分发选择器、字节偏移及推断的参数和可变性
SQLite 数据库 表、列、索引、视图、触发器和选定普通表中的数据行
固件、应用包和资源 区域识别、提取结果、文件清单、摘要、Apple 应用包结构及后续分析交接
网络记录与数据包 HAR、SAZ 等记录中的请求和响应,以及端点、DNS、TLS SNI 和协议统计
Linux 崩溃记录、逻辑信号 线程寄存器、信号、映射候选,以及信号解码注释和采样范围
进程行为 终端输出、交互、退出与文件系统观察,以及不同运行之间的比较

这些能力各有环境要求。例如,部分工具限定在 Linux 上使用,Android APK 反编译需要 JADX 和完整 JDK,网站分析需要 Chrome 系浏览器。README 的能力列表不意味着所有功能都能在任意平台直接使用。

五、值得关注的技术亮点

1. 调查结果包含证据与局限

REA 强调将发现与支撑材料一起返回。对原生程序,材料可以是汇编、伪代码、调用和引用;对 Electron 应用,则可以是模块关系、preload 和 IPC 路径。

这些材料让智能体能够继续追问,也让读者有依据判断结论的适用范围。

2. 能沿着应用层与原生层之间的关系追踪实现

README 展示的调查既包括应用层功能,也包括底层指令。例如,Electron 分析可以追踪渲染进程、preload、IPC 和主进程之间的关系;原生分析则可以进一步检查具体计算对应的机器指令。

这种覆盖范围适合围绕某项功能组织调查,而不必将问题限定为单个文件或单一格式。

3. 将分析发现用于实现和验证

原生分析输出的是伪代码和汇编,JavaScript / Electron 分析输出模块及其关系。智能体再利用这些发现编写和测试实现。

README 给出的 DX-Ball 声音声像计算案例具有明确的验证数据:

  • 沿声音调用追踪到“位置转声像”的辅助函数。
  • 结合指令,将不完整伪代码重建为 C。
  • 重建结果通过 3,205 个原始 x86 测试用例。
  • 复现了该函数编译后的 全部 63 字节。

这是特定案例的验证结果,不能据此推断 REA 对所有目标的还原准确率。

4. 同时提供智能体工作流和终端入口

安装流程会注册 MCP 服务,并安装与之匹配的调查工作流指令;CLI 则提供直接调用入口。文档还涵盖分析后端选择、快照、导入导出、脚本和退出状态,便于将分析过程接入终端工作流。

六、README 中的代表案例

案例 调查内容
DX-Ball 从原始指令重建声音声像计算,并通过测试用例与编译字节验证
Notion 从渲染进程的剪贴板 API 出发,经 preload 和 IPC 追踪至主进程,检查富文本剪贴板格式
TH04 分析 PC-98 游戏的 16 位指令,恢复固定角度和瞄准角度计算,并将重建的 C++ 与历史编译器输出比较

这些案例分别展示了数值计算重建、应用通信链路追踪和历史软件分析的使用方式。

七、如何开始使用

基础环境需要 Node.js 和 npm。README 指定支持:

  • Node.js 22.x,版本至少为 22.19;
  • Node.js 24.x,版本至少为 24.11;
  • Node.js 26 或更高版本。

运行安装向导:

npx rea-agents setup

随后选择智能体、检查拟议配置变更并批准。安装程序会添加 MCP 服务与匹配的工作流指令,备份现有配置;完成后需要重启智能体。

若要直接分析已提取的 JavaScript / Electron 应用目录或 ASAR,可以使用:

npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json

该命令返回模块、导入、Electron 边界及相关证据。需要经常使用 CLI 时,可以全局安装:

npm install --global rea-agents
rea --help

深入分析原生二进制前,还需要配置相应的分析后端。

八、适用范围与使用边界

按 README 的定位,REA 适用于合法研究、教育、互操作性研究、软件保存,以及分析自己拥有或获准检查的软件。

REA 自有代码采用 MIT 许可证,但 Hopper、IDA Pro / Hex-Rays、JEB 等商业工具需要单独合法获取,并遵守各自的许可条款。REA 本身不提供这些工具的许可证或激活权益。

进一步了解可参考官方指南、案例展示和安装文档。