Skip to content

如何解压 electron 中的 asar 文件

一、解压正常的 electron 的 asar 包

当你想要解压 Electron 应用程序中的 .asar 文件时,可以按照以下步骤进行操作:

  1. 全局安装 asar:

    在命令行终端中执行以下命令,以全局安装 asar 工具:

    bash
    npm install -g asar

    这将使你能够在命令行中使用 asar 命令。

  2. 解压 asar 文件:

    在命令行终端中使用以下命令来解压 .asar 文件:

    bash
    asar extract path-to-your.asar output-folder
    • path-to-your.asar:要解压的 .asar 文件的路径。
    • output-folder:你希望解压到的目标文件夹路径。

    例如:

    bash
    asar extract app.asar app_extracted

    上述命令将会解压 app.asar 文件并将内容提取到名为 app_extracted 的文件夹中。

确保在进行这些操作时理解自己的操作,以避免无意中影响应用程序的正常运行。最好在测试环境中执行这些步骤,以免影响生产环境的稳定性。

请注意,以上步骤提供了使用 asar 工具进行解压的方法。你也可以使用 Node.js 的 asar 模块来在代码中解压 .asar 文件,具体方法可参考前面的回答。

二、electron asar 解压失败?app.asar 被加固,加固包的现象

  1. 使用 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>

如图所示:

alt text

  1. 通过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 工具。以下是具体步骤:

  1. 安装 asar 工具: 如果你还没有安装 asar,可以通过 npm 进行安装:

    bash
    npm install -g asar
  2. 压缩文件夹: 使用 asar 工具将 app_extracted 文件夹压缩为 app.asar 文件:

    bash
    asar pack app_extracted app.asar

执行上述命令后,app_extracted 文件夹将会被压缩成一个名为 app.asar 的文件,放在当前目录下。

五、参考: