【问题标题】:how to unpack resources.pak from google chrome?如何从谷歌浏览器解压 resources.pak?
【发布时间】:2012-05-24 21:22:09
【问题描述】:

有很多有趣的文件可以通过chrome://resources/* 使用谷歌浏览器访问。

在 linux 上,内容在/opt/google/chrome/resources.pak。我知道我可以从http://chromium.googlecode.com/svn/trunk/ 获得全部来源,但我想解压缩resource.pak 文件。

file resources.pak 报告只是垃圾。

需要明确的是,问题不在于从哪里获取这些资源。问题是resources.pak 文件格式是什么,如何解压?

【问题讨论】:

    标签: google-chrome compression


    【解决方案1】:

    我发现resource.pak V5 有了新的格式:

    struct header {
        // 5 is the latest version
        uint32_t version;
        // 0 = BINARY, 1 = UTF8, 2 = UTF16
        uint8_t encoding;
        // 3 bytes padding
        uint8_t padding[3];
        uint16_t resource_count;
        uint16_t alias_count;
    };
    

    紧随其后的是resource_countresources和alias_countaliases。

    struct resource {
        uint16_t resource_id;
        uint32_t file_offset;
    };
    
    struct alias {
        uint16_t resource_id;
        uint16_t entry_index;
    };
    

    其中uint32_t = 4 个字节,uint16_t = 2 个字节,uint8_t = 1,所有小端整数。

    来源地址为https://github.com/chromium/chromium/blob/master/ui/base/resource/data_pack.cc

    【讨论】:

      【解决方案2】:

      chrome-pak-customizer(MrU 在上面的 cmets 中指出)似乎可以很好地解压 Chrome 的.pak 文件。如果您使用的是 Windows,则可以从 releases 页面下载并解压缩 chrome-pak.7z。然后将.pak 文件放到unpack.bat 脚本上进行解压。

      对于其他平台,您似乎需要从源代码构建工具。

      【讨论】:

      • 原来 chrome-pak-customizer 与最新的 Chrome 版本不兼容(通过在不修改 pak 文件的情况下解压和重新打包测试)ChromePAK 似乎可以工作!
      • 我尝试在 Windows 上的 Chrome 70 或 71 中解压缩 pak 文件,并且资产已正确解压缩。我没有尝试重新打包文件。
      【解决方案3】:

      取自https://groups.google.com/a/chromium.org/forum/?fromgroups=#!topic/chromium-dev/agGjTt4Dmcw

      4 字节版本号
      4字节资源数
      1字节编码

      对于每个资源:
      2 字节资源 ID
      文件中的 4 字节资源偏移量

      末尾有一个额外的资源条目,ID 为 0,表示最后一个资源的结尾(本质上是文件的长度)

      这个python模块可以解压和重新打包文件:
      data_pack.py from grit-i18n

      【讨论】:

      • 只需将data_pack.py中的第160行从:print "%s: %s" % (resource_id, text)替换为:with open(str(resource_id), "wb") as file: file.write(text),然后运行:python data_pack.py yourfile.pak,即可将文件解压到当前目录。
      • @niutech,听起来好像只需要下载一个文件,但实际上,您必须下载整个项目,否则data_pack.py 将没有它的依赖项。 :-P
      • @pileofrocks 我找到了这个github.com/myfreeer/chrome-pak-customizer,它可以解压和打包,但 Opera 似乎不接受重新打包的文件。
      • @MrU 我无法让它工作(仅限 Windows?),但这个 github.com/shuax/ChromePAK 位于 Github 页面的底部。这个成功了,Brave 接受了重新打包的文件。
      • @MrU 这对于答案来说可能太晦涩难懂了......但是在 Github 页面顶部有一个链接另一个页面,在该页面中间的“ChromePAK V5”下有一个链接到“ pak_tools_v5.7z”,它包含所有平台的命令行工具。调用“pak_tools(.exe)”时会看到使用示例。
      猜你喜欢
      • 2016-04-20
      • 2011-02-04
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-27
      • 2012-01-21
      • 2015-04-06
      相关资源
      最近更新 更多