electron打包后所有資源都會放到asar壓縮文檔里面,這個文件是可以被解壓的。
打包時雖然可以對js代碼進行混淆(terser-webpack-plugin),但是這個方式只是增加了閱讀難度,並沒有實現代碼的加密。
對於有保密需求的邏輯最好的方式就是使用(N_API)實現。
主進程和渲染進程代碼加密的一種實現:
1、主進程和渲染進程分別生成唯一的js文件(壓縮和混淆):main.js和renderer.js
2、在生成完成后打包之前對renderer.js文件進行可逆加密(如AES)
3、打開窗口時讀取renderer.js文件進行解密並運行(executeJavaScript)
這種方式也有缺陷,加解密函數都暴露在main.js文件里面,簡單的混淆並不可靠,最后可以對main.js再次進行(加密)
具體過程:
1、對renderer.js的生成不要自動插入html頁面:inject配置項
2、在build完成時加密renderer.js
3、在主進程創建窗口完成時執行executeJavaScript方法加載renderer.js