メインコンテンツへ飛ぶ

ASAR 整合性

サポートプラットフォーム

ASAR 整合性検査は現在、macOS でのみサポートされています。

要件

Electron Forge / Electron Packager

>= @electron/packager>= electron-packager@15.4.0 または >= @electron-forge/core@6.0.0-beta.61 を使用している場合、これらの要件はすべて自動的に満たされ、Fuse の切り替え はスキップできます。

他のビルドシステム

ASAR の整合性検査を有効にするには、asar npm パッケージが asar 整合性をサポートするバージョンで app.asar ファイルが生成されたことを確かめる必要があります。 サポートはバージョン 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>

有効な algorithm の値は現在 SHA256 のみです。 hash は ASAR ヘッダのハッシュで使うために指定するアルゴリズムです。 asar パッケージは getRawHeader メソッドを提供しており、このメソッドの結果をハッシュ化することでこの値を生成できます。

Fuse の切り替え

ASAR 整合性検査は現在デフォルトで無効になっており、Fuse を切り替えることで有効にできます。 Electron Fuse が何なのかやその動作方法については、Electron Fuse をご参照ください。 この Fuse を有効にすると Electron アプリのコード探索パスを介して整合性検査をバイパスできるので、通常は onlyLoadAppFromAsar Fuse も有効にします。

const { flipFuses, FuseVersion, FuseV1Options } = require('@electron/fuses')

flipFuses(
// 例: /a/b/Foo.app
pathToPackagedApp,
{
version: FuseVersion.V1,
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
[FuseV1Options.OnlyLoadAppFromAsar]: true
}
)