Electron ASAR 完整性

2023-02-16 17:16 更新

平臺(tái)支持?

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

要求?

Electron Forge / Electron Packager

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

其他構(gòu)建系統(tǒng)

為了啟用ASAR 完整性檢查,你需要確保 app.asar 文件是由支持 asar 完整性的 asar npm 軟件包生成的。 版本 3.1.0中引入了支持。

然后,您必須在打包的應(yīng)用程序 Info.plist 中填充有效的 ElectronAsarIntegrity 字典塊。下面包含一個(gè)示例。

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

有效算法值當(dāng)前僅為 SHA256。散列是使用給定算法的 ASAR 標(biāo)頭的散列。 asar 包公開了一個(gè) getRawHeader 方法,然后可以對(duì)其結(jié)果進(jìn)行哈希處理以生成此值。

Toggling the Fuse(切換保險(xiǎn)絲)?

ASAR 完整性檢查目前默認(rèn)處于禁用狀態(tài),可以通過切換保險(xiǎn)絲來啟用。有關(guān)什么是電子保險(xiǎn)絲及其工作原理的更多信息,請(qǐng)參閱電子保險(xiǎn)絲。啟用此保險(xiǎn)絲時(shí),您通常還希望啟用 onlyLoadAppFromAsar 保險(xiǎn)絲,否則可以通過 Electron 應(yīng)用程序代碼搜索路徑繞過有效性檢查。

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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)