☰
一条命令查出 Electron 应用包是否被动手脚:REA ASAR 完整性校验快速指南
2026/10/18 4:29:17 网站建设 项目流程

一条命令查出 Electron 应用包是否被动手脚:REA ASAR 完整性校验快速指南

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

拿到一个桌面应用安装包,不确定它是否被篡改过?REA 的ASAR 完整性校验能一步给出答案:它把 Electron 应用包app.asar里每个文件声明的 SHA-256 和真实字节逐条比对,有出入就指出是哪个文件,全程不执行任何一行应用代码。

🧩先说清楚:ASAR 包为什么容易被改?

Electron 应用会把全部前端代码和资源打进一个 ASAR 归档(通常是app.asar,本质是"文件清单 + 拼接的字节流")。清单和字节流是分开的,攻击者改某个 JS 文件里的几个字节,逻辑就变了,包外表却看不出差别。常见套路就三种:清单没动、内容字节被替换;.asar.unpacked伴生目录里的文件(常放原生插件.node)被调包;整个包被重新打包,头部结构或大小变了。

检测思路只有一条:声明的哈希和实际算出来的哈希,逐个文件对上。这正是 REA 在做的事。

一条命令跑起来

先按 安装说明 把 REA 装好(不想装全局的话,也可以用npx -y rea-agents@latest直接跑)。然后把目标应用目录里的app.asar交给它:

rea analyze /absolute/path/to/apps/app.asar --json

这条命令会自动走 JavaScript 静态分析路线,返回应用图、Electron 边界摘要和完整性校验结果,--json让结果可落盘、可存档。想显式指定路线,用rea analyze-javascript-application,参数与输出细节见 CLI 指南。不需要浏览器,也不需要连接目标应用。

校验结果怎么读

🔍 结论是一张状态表,不是长篇大论,对着看就行:

结果状态含义下一步动作
✅ 全部一致包内容与声明的完整性元数据相符,无篡改证据把本次 SHA-256 存为基线,日后可比
⚠️ integrity 失败声明哈希与实际字节矛盾,或读取期间包被换过按逻辑路径定位文件,回官方渠道重新下载
hash_status: unavailable声明了 unpacked 伴生文件但字节缺失缺失字节被如实记为 unknown,补全文件后再验
format 失败头部结构或条目偏移、长度越界归档本身损坏或被整体重打包

每条 integrity 失败都会带上三样东西:逻辑路径(包内哪个文件出问题)、声明值 vs 计算值(两个 SHA-256 并排给出)、是否 unpacked 条目(判断问题在包内还是伴生目录),足够你直接定位。

校验背后四个设计决定

不用读源码也能用,但知道边界会更能放心:

  1. 声明值要先过审:头部元数据只有在算法是 SHA256 且哈希为 64 位十六进制时才被当作声明值,否则留空,不当作"有声明"。
  2. 先查边界再流式哈希:读取前先校验条目的偏移和长度没有越过归档边界,然后按字节范围流式读取、边读边算 SHA-256,核心在 AsarArtifactReader.ts。
  3. unpacked 不是免检通行证:伴生目录的字节同样要和归档声明的完整性值比对,读取时还会防符号链接逃逸出伴生目录。
  4. 防"边读边被换":打开归档时会先做快照,读取前再核对容器大小和文件标识,期间包被二次替换会报完整性失败,而不是静默通过。

伴生字节缺失时,REA 会继续分析包内嵌入的 JavaScript,缺失部分记为 unknown——既不假装通过,也不假装文件不存在,详见 JavaScript 工件重建文档 的 What is reconstructed 章节。

进阶:发现篡改后想继续分析

默认策略是fail:任何不一致立即返回失败。想"记录不一致但继续分析其余文件",显式选择另一个策略:

rea analyze-javascript-application /absolute/path/to/app.asar \ --integrity-policy record-and-continue --json

这样已校验通过的文件照常分析,每个不一致项都保留声明/计算哈希记录,应用图覆盖标记为 partial,受影响路径全部列入 limitations。结果契约见 MCP 合约 的 Integrity record-and-continue 章节。

常见疑问

问:校验需要运行目标应用吗?不需要。全程静态:读字节、算哈希、对声明。重建路径不用eval、Function,也不碰 DOM,不跑应用的引导代码,对可疑样本安全。

问:手上没有哈希工具,能直接看差异吗?可以。结果直接给出声明值与实际值的差异,不用你手动算 SHA-256。

问:官方包和可疑包怎么并排对比?两次结果各存成 JSON,用rea evidence-import导入、rea compare对两个证据包做比对即可。

问:缺了伴生文件,结果还算可信吗?算。缺失字节被标记为 unknown 而不是"已验证",结论不会因此虚高。

查包是否被改,说到底就是回答一个问题:真实字节流和声明的哈希还对得上吗。REA 的 ASAR 完整性校验把这件事压成一条命令——包内文件和 unpacked 伴生目录都覆盖、读取期间的替换防得住、缺字节如实标记,结果可信、可直接存档比对。

【免费下载链接】reaReverse engineer anything with agents, from app behavior down to native binaries.项目地址: https://gitcode.com/GitHub_Trending/rea2/rea

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询