软件推荐 › asar

asar

解压asar压缩包

适用系统:CLI

软件介绍

asar文件格式

ASAR 全称是 Atom Shell Archive Format。asar 归档文件采用类似 tar 的简单格式,将众多文件合并为一个单一文件。Electron 能够在无需解压整个文件的情况下,从中随机读取特定文件。

创建 ASAR 格式的主要目的,是为了在 Windows 系统上提升读取众多小文件时的性能,例如在从 node_modules 中加载应用程序的 JavaScript 依赖时。

文件头部包含一个 JSON 格式的字符串,记录其中包含的文件结构以及所有文件的起始位置以及文件长度:

{
   "files": {
      "tmp": {
         "files": {}
      },
      "usr" : {
         "files": {
           "bin": {
             "files": {
               "ls": {
                 "offset": "0",
                 "size": 100,
                 "executable": true,
                 "integrity": {
                   "algorithm": "SHA256",
                   "hash": "...",
                   "blockSize": 1024,
                   "blocks": ["...", "..."]
                 }
               },
               "cd": {
                 "offset": "100",
                 "size": 100,
                 "executable": true,
                 "integrity": {
                   "algorithm": "SHA256",
                   "hash": "...",
                   "blockSize": 1024,
                   "blocks": ["...", "..."]
                 }
               }
             }
           }
         }
      },
      "etc": {
         "files": {
           "hosts": {
             "offset": "200",
             "size": 32,
             "integrity": {
                "algorithm": "SHA256",
                "hash": "...",
                "blockSize": 1024,
                "blocks": ["...", "..."]
              }
           }
         }
      }
   }
}

offset 和 size 用于记录从存档文件中读取具体文件所需的信息。由于 offset 计数是从 0 开始,因此要获取文件的实际偏移量,需要手动将 header_size 和 header 的大小加到 offset 值上。

在这里,offset 用字符串格式表示的 UINT64 数字,因为 JavaScript 的 Number 类型无法精确表示 UINT64。而 size 则是一个不超过 Number.MAX_SAFE_INTEGER(即 9007199254740991,约合 8PB)的 JavaScript 数字。

integrity 是一个包含几个关键元素的对象:

  • 一种哈希算法,目前仅支持 SHA256。
  • 一个代表整个文件哈希的十六进制编码哈希值。
  • 一个包含文件各个块的十六进制编码哈希值的数组。例如,如果 blockSize 设置为 4KB,那么这个数组将包含将文件分割成若干个 4KB 块后,每个块的哈希值。
  • 一个整型值 blockSize,用来表示上述各块哈希中,每个块的字节大小。

asar文件解压

asar extract app.asar
分享至:

评论

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-22 21:36
浙ICP备14020137号-1 $Map of visitor$