來源:https://newsn.net/say/electron-asar.html
在electron
中,asar
是個特殊的代碼格式。asar包里面包含了程序猿編寫的代碼邏輯。默認情況下,這些代碼邏輯,是放置在resource/app
目錄下面的,明文可見,這樣的話,也就有了代碼加密(asar
打包)的需求
asar 如何解密加密?electron 的 asar 的具體用法(圖12-1)
在本篇文章中,蘇南大叔將要講述的內容就是:asar
工具的使用。本文的模特是:在mac
下面,使用electron-packager
簡單打包的quick-start
項目dmg
文件。
基本說明
在electron
的構建體系中,打包這個概念特別的容易混淆。這里有很多種結果都是可以說是打包,但是打包的程度是完全不同的,這也就決定了不同的打包場景。本文中,asar
這個打包,是個最最最最最小的打包概念,而且這個包,僅僅是對resource/app
目錄的封裝,讓人們不是那么容易看到你寫的代碼結果而已。
asar 如何解密加密?electron 的 asar 的具體用法(圖12-2)
asar有很多參數,大家可以使用 asar --help
來查看其基本參數。當然,如果你使用 asar --help
沒有反應的話,那么可能您的系統里面還沒有全局安裝asar
,這個時候,你需要下述命令安裝一下asar依賴包。
sudo npm install asar -g
asar 如何解密加密?electron 的 asar 的具體用法(圖12-3)
asar --help
asar 如何解密加密?electron 的 asar 的具體用法(圖12-4)
目錄結構
提起asar
,就應該提起resource
目錄。這個目錄是asar
的主戰場,里面會有個electron.asar
的文件,這個是系統自帶的。而如果您的打包命令里面沒有指定asar
參數的話,你的默認代碼目錄就會是個app
文件夾,而不是app.asar
。
asar 如何解密加密?electron 的 asar 的具體用法(圖12-5)
asar 如何解密加密?electron 的 asar 的具體用法(圖12-6)
當然,你可以使用asar
命令,把app
目錄打包成app.asar
文件,然后刪除app
目錄。但是這樣的話,然並卵,你的最終的文件可能會因此不能正常運行。正確的做法是:你使用electron-packager
打包的時候,就必須指定好參數--asar
,這樣就可以生成個app.asar
文件了。
asar 如何解密加密?electron 的 asar 的具體用法(圖12-7)
asar 如何解密加密?electron 的 asar 的具體用法(圖12-8)
解壓app.asar
兩條命令任選其一
asar e app.asar <解壓后的目錄> asar extract app.asar <解壓后的目錄>
我們可以修改 <解壓后的目錄> 里面的文件,然后,我們再進行打包即可。
asar 如何解密加密?electron 的 asar 的具體用法(圖12-9)
asar 如何解密加密?electron 的 asar 的具體用法(圖12-10)
打包app.asar
兩條命令任選其一,打包asar
之后,再看效果。
asar p <被打包的目錄> app.asar asar pack <被打包的目錄> app.asar
asar 如何解密加密?electron 的 asar 的具體用法(圖12-11)
asar 如何解密加密?electron 的 asar 的具體用法(圖12-12)
結論
asar
打包僅僅是個非常初級的加密方式,解密也非常容易。所以,還是把你的代碼,使用webpack
類似的前端構建工具,進行代碼加密混淆,才是正途。