Electron ASAR 完整性

2023-02-16 17:16 更新

平台支持

目前只在 macOS 上支持ASAR完整性检查。

要求

Electron Forge / Electron Packager

如果你使用 >= electron-packager@15.4.0 或 >= @electron-forge/core@6.0.0-beta.61 那么将满足所有需求。

其他构建系统

为了启用ASAR 完整性检查,你需要确保 app.asar 文件是由支持 asar 完整性的 asar npm 软件包生成的。 版本 3.1.0中引入了支持。

然后,您必须在打包的应用程序 Info.plist 中填充有效的 ElectronAsarIntegrity 字典块。下面包含一个示例。

<key>ElectronAsarIntegrity</key>
<dict>
  <key>Resources/app.asar</key>
  <dict>
    <key>algorithm</key>
    <string>SHA256</string>
    <key>hash</key>
    <string>9d1f61ea03c4bb62b4416387a521101b81151da0cfbe18c9f8c8b818c5cebfac</string>
  </dict>
</dict>

有效算法值当前仅为 SHA256。散列是使用给定算法的 ASAR 标头的散列。 asar 包公开了一个 getRawHeader 方法,然后可以对其结果进行哈希处理以生成此值。

Toggling the Fuse(切换保险丝)

ASAR 完整性检查目前默认处于禁用状态,可以通过切换保险丝来启用。有关什么是电子保险丝及其工作原理的更多信息,请参阅电子保险丝。启用此保险丝时,您通常还希望启用 onlyLoadAppFromAsar 保险丝,否则可以通过 Electron 应用程序代码搜索路径绕过有效性检查。

require('@electron/fuses').flipFuses(
  // 比如 /a/b/Foo.app
  pathToPackagedApp,
  {
    version: FuseVersion.V1,
    [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
    [FuseV1Options.OnlyLoadAppFromAsar]: true
  }
)


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号