25

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

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

file resources.pak报告只是垃圾。

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

4

3 回答 3

27

取自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

于 2012-11-14T21:20:15.530 回答
4

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

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

于 2018-12-17T20:43:35.640 回答
2

我发现 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_count resources 和alias_count aliases。

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

于 2019-08-29T15:26:39.480 回答