如何解压 electron 中的 asar 文件
一、解压正常的 electron 的 asar 包
当你想要解压 Electron 应用程序中的 .asar
文件时,可以按照以下步骤进行操作:
全局安装 asar:
在命令行终端中执行以下命令,以全局安装
asar
工具:bashnpm install -g asar
这将使你能够在命令行中使用
asar
命令。解压 asar 文件:
在命令行终端中使用以下命令来解压
.asar
文件:bashasar extract path-to-your.asar output-folder
path-to-your.asar
:要解压的.asar
文件的路径。output-folder
:你希望解压到的目标文件夹路径。
例如:
bashasar extract app.asar app_extracted
上述命令将会解压
app.asar
文件并将内容提取到名为app_extracted
的文件夹中。
确保在进行这些操作时理解自己的操作,以避免无意中影响应用程序的正常运行。最好在测试环境中执行这些步骤,以免影响生产环境的稳定性。
请注意,以上步骤提供了使用 asar
工具进行解压的方法。你也可以使用 Node.js 的 asar
模块来在代码中解压 .asar
文件,具体方法可参考前面的回答。
二、electron asar 解压失败?app.asar 被加固,加固包的现象
- 使用
asar extract app.asar app_extracted
命令解压 app.asar 会解压失败,并且会生成几个很大的文件通过查看大小都是 1GB 的
powershell
PS C:\Users\Administrator\AppData\Local\Programs\your_app_name\resources> asar extract app.asar app_extracted
node:internal/errors:540
throw error;
^
RangeError [ERR_OUT_OF_RANGE]: The value of "size" is out of range. It must be >= 0 && <= 9007199254740991. Received 6_.39_442_808_733_992_5e+_307
at Function.alloc (node:buffer:389:3)
at module.exports.readFileSync (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\lib\disk.js:106:23)
at module.exports.extractAll (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\lib\asar.js:204:28)
at Command.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\bin\asar.js:72:10)
at Command.listener [as _actionHandler] (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\node_modules\commander\index.js:413:31)
at Command._parseCommand (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\node_modules\commander\index.js:914:14)
at Command._dispatchSubcommand (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\node_modules\commander\index.js:865:18)
at Command._parseCommand (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\node_modules\commander\index.js:882:12)
at Command.parse (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\node_modules\commander\index.js:717:10)
at Object.<anonymous> (C:\Users\Administrator\AppData\Roaming\npm\node_modules\asar\bin\asar.js:80:9) {
code: 'ERR_OUT_OF_RANGE'
}
Node.js v22.5.1
PS C:\Users\Administrator\AppData\Local\Programs\your_app_name\resources>
如图所示:
- 通过
asar list app.asar
命令查看文件情况, 可以看到详细的文件信息,却无法解压出来。
powershell
asar list app.asar
powershell
PS C:\Users\Administrator\AppData\Local\Programs\your_app_name\resources> asar list app.asar
\78ed0483c6b3bc67c02745ce38ca56b90037fede53abc2d88473f5e51259
\5048222779d857b2aa571412b3de48d6b3155c13efa4379d768766e7a6df
\8105649149fc0577c947235a8bf6556132720ae9fa221ba842ee7bf28d66
\3de8e6042509e1cd955527c2d3e1dd175473b3e2e41eabd50784ed412ae2
\17e39e81d69276979c83d1a9fc3662885355dfbe9cfbf7d3e6fa17aa2278
\4da1a33ea010804e59a0d6db592ddbd1b41a2b21eaa842fd0a604630472e
\ef9391c05fd2f951d8339567431b2889263885a222ba033dbdb985393c0d
\7d3c86d47eaad3ef8b6b26a6fc20842b14d42965ef2330953e20029f4d5f
\555e26bb704cf5a8153aeb47251681ec757f35421b32539bbad4535717cd
\6022e4d28c0eb99ce0f50588c01fc517453c7df68c790660b8901c487c4a
\license
\production
\development
\staging
\secrets
\test
\test\test1.js
\test\test2.js
\test\test3.js
\package.json
\dist
\dist\renderer
\dist\renderer\08ac9f4b12cac1336d27.png
\dist\renderer\0dd217cbd415a970c848.png
\dist\renderer\1588e1dc74896e578dac.png
\dist\renderer\2054b40181e2f5816cd0.png
\dist\renderer\257476c5cbcf85eca4a7.png
\dist\renderer\2a8ebe898a180850b33d.png
\dist\renderer\2bbcd1ab8cf5f2c7c2b8.png
\dist\renderer\2c6e75506090ac8d710d.png
\dist\renderer\2da4186194b77a9cf4a3.png
\dist\renderer\354f07c32240020c557d.png
\dist\renderer\3e780ed05b9a29819c8f.png
\dist\renderer\4068c2230df7a144b77f.png
\dist\renderer\537ac5566f64b266e045.png
\dist\renderer\630273278a3f63c09255.png
\dist\renderer\6ac6536e015b7c4ff47d.png
\dist\renderer\7ac9ff855b366f8546b1.png
\dist\renderer\7eacfbd9c5b2e52d0a63.png
\dist\renderer\924dd5577deec26280e6.png
\dist\renderer\a758216db7a46f9b35c0.png
\dist\renderer\adea345dbd20d1ae01f2.png
\dist\renderer\b80f7db1886f37d6d477.png
\dist\renderer\bb5a68418402bb91301b.png
\dist\renderer\c0d7cfbc720197813a07.png
\dist\renderer\ca766d172f28354d7c85.ttf
\dist\renderer\dade92c09cd0c0d6c787.png
\dist\renderer\e1e083382eff43099109.png
\dist\renderer\index.html
\dist\renderer\renderer.js
\dist\renderer\renderer.js.LICENSE.txt
\dist\renderer\style.css
\dist\main
\dist\main\main.js
\dist\main\main.js.LICENSE.txt
\dist\main\preload.js
\dist\main\webview-preload
\dist\main\webview-preload\zalo-preload
\dist\main\webview-preload\zalo-preload\index.js
\dist\main\webview-preload\whatsapp-preload
\dist\main\webview-preload\whatsapp-preload\index.js
\dist\main\webview-preload\twitter-preload
\dist\main\webview-preload\twitter-preload\index.js
\dist\main\webview-preload\tiktok-preload
\dist\main\webview-preload\tiktok-preload\index.js
\dist\main\webview-preload\telegram-preload
\dist\main\webview-preload\telegram-preload\index.js
\dist\main\webview-preload\messenger-preload
\dist\main\webview-preload\messenger-preload\index.js
\dist\main\webview-preload\line-preload
\dist\main\webview-preload\line-preload\index.js
\dist\main\webview-preload\line-preload\index.js.LICENSE.txt
\dist\main\webview-preload\instagram-preload
\dist\main\webview-preload\instagram-preload\index.js
\dist\main\webview-preload\google-voice-preload
\dist\main\webview-preload\google-voice-preload\index.js
\dist\main\webview-preload\facebook-preload
\dist\main\webview-preload\facebook-preload\index.js
\dist\main\webview-preload\botim-preload
\dist\main\webview-preload\botim-preload\index.js
PS C:\Users\Administrator\AppData\Local\Programs\your_app_name\resources>
三、解压 electron 加固 asar 后的包,也就是破解 asar 加固包
1. 全局安装 asar-plus 模块
全局安装
bash
npm i -g asar-plus --registry=https://registry.npmmirror.com
检查 asar-plus 是否安装成功
powershell
asar-plus -h
成功的日志信息
powershell
PS C:\Users\Administrator> asar-plus -h
Usage: asar [options] [command]
Manipulate asar archive files
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
pack|p [options] <dir> <output> create asar archive
list|l [options] <archive> list files of asar archive
extract-file|ef <archive> <filename> extract one file from archive
extract|e [options] <archive> <dest> extract archive
*
help [command]
2. 切换到 app.asar 所在的目录
bash
cd your/app/resources/
3. 执行命令
bash
asar-plus e -iff -iu app.asar ./app_extracted/
四、如何把解压 app_extracted 文件夹修改后重新压缩为 app.asar
要将解压后的 app_extracted
文件夹重新压缩为 app.asar
文件,可以使用 asar
工具。以下是具体步骤:
安装 asar 工具: 如果你还没有安装
asar
,可以通过 npm 进行安装:bashnpm install -g asar
压缩文件夹: 使用
asar
工具将app_extracted
文件夹压缩为app.asar
文件:bashasar pack app_extracted app.asar
执行上述命令后,app_extracted
文件夹将会被压缩成一个名为 app.asar
的文件,放在当前目录下。
五、参考:
- 解包加固的 app.asar 文件 https://www.52pojie.cn/thread-1860790-1-1.html
- github asar-plus https://github.com/evlon/asar-plus
- electron asar 防止解压 asarmor 安装教程 node-gyp 总是安装失败? https://www.jianshu.com/p/871babd8b429