REA ASAR完整性校验不启动应用快速检测被篡改的Electron包【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea你从两个不同渠道下载了同一个桌面客户端两次都能正常安装、正常启动——但两份app.asar里的字节真的相同吗对 Electron 开发者和安全评审来说这是个最常见、也最难手工回答的问题。REA 是一个开源的逆向工程 Agent它的 ASAR 完整性校验功能会对 Electron 应用包做声明哈希 vs 实际字节的逐条比对全程不执行任何应用代码免费可用。把校验问题拆成三块动手之前先拆问题。ASAR 归档的篡改基本逃不出三类位置头部元数据没动字节被换了ASAR 头部的integrity字段声明了每个文件的 SHA-256攻击者改的是数据区。最隐蔽因为归档结构看起来完全正常伴生文件被调包原生模块常不在归档里而是放在旁边的archive.unpacked目录。换一个.node文件归档内部不留痕迹整包被重打包头部大小或归档结构直接变化。三类的解决思路是同一句话把头部声明的和实际读到的逐条比对。这是纯读字节、算哈希的静态工作不需要运行目标代码。REA 的做法核心实现在 src/artifacts/AsarArtifactReader.ts几个关键点清单阶段先收声明值头部每个文件条目的integrity字段算法为 SHA256被提取为比对清单不符合 64 位十六进制格式的条目不会被当成声明值接受按字节范围读、边读边算读取前先校验该条目的偏移和长度是否越界流式计算实际 SHA-256读到的字节数与声明长度对不上直接失败unpacked 不是免检项archive.unpacked伴生目录的字节同样要与归档声明值做哈希比对且打开时检查符号链接防止链接指向伴生目录之外防边读边被换READER 启动时对容器做一次性快照读取期间再核对容器大小与文件标识。清单和读取之间包体被二次替换会得到integrity失败而不是静默通过。比对出的矛盾会汇入integrity_contradictions记录结构见 src/artifacts/inventory/scanCanonical.ts。最短上手路径先按 installation.md 完成安装核心是npx rea-agents setup。然后把目标归档直接交给通用命令.asar文件会自动走 JavaScript 静态分析工作流无需启动 Electron 进程rea analyze /absolute/path/to/apps/app.asar --json如果希望记录矛盾但继续分析其余文件在专用命令上显式声明策略rea analyze-javascript-application /absolute/path/to/apps/app.asar \ --integrity-policy record-and-continue --json默认策略是fail任何不一致立即失败。参数与行为细节见 javascript-artifact-reconstruction.md。输出走查以下是一段示意性输出摘录字段名与上述记录结构一一对应integrity_contradictions: [{ logical_path: node_modules/demo/index.js, declared_sha256: 9f2c...64位, observed_sha256: 71ab...64位, unpacked: false, trust: observed-untrusted }]逐条看logical_path包内哪个文件比对失败定位问题的起点declared_sha256/observed_sha256两个哈希并列。不一致就代表字节不是头部声明的那一份unpacked为true时说明问题出在伴生目录而非归档内部trust: observed-untrusted该文件字节在后续分析中不被信任应用图覆盖率会降为 partial矛盾路径一并写入 limitations。还有一种特殊状态头部声明了 unpacked 条目但伴生字节缺失时该条目的hash_status为unavailable——REA 把它记为未知而非已验证同时继续分析归档内嵌的 JavaScript。缺失即未知这条规则避免了缺失文件被静默放行。边界与注意⚠️默认策略是 fail-fast。想继续看包内其他文件必须显式加--integrity-policy record-and-continue否则首次不一致就停止unpacked 不一致存在已知的误报场景部分打包工具在写完归档头之后还会重新签名或剥离.asar.unpacked里的原生二进制声明哈希随之对不上但不一定是攻击。错误信息会指明这个原因并建议改用record-and-continue重跑下结论前值得先看见 mcp-contracts.md 的完整性章节这是静态检查不是运行时检查。它防的是改了字节、头部没改这一类篡改如果攻击同时改掉头部和字节声明与实际依然相符这种情形要靠与官方渠道的整包 SHA-256 基线对比来兜底符号链接不会被跟随目录读取器不追链接ASAR 内的 symlink 条目只记为 limitation 不展开。这是行为边界不是缺陷结果可存档、可并列对比rea compare left.json right.json能对比两个 Evidence 包适合把官方包与可疑包并排看差异命令总览见 cli.md。一句话总结ASAR 完整性校验把这个包有没有被动手脚变成了一道逐条哈希比对题头部与字节、伴生目录、读取时差三类风险都被 REA 收敛成一条可核查的记录让你在完全不启动应用的前提下对可疑安装包下判断。【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?