Как распаковать ресурс.пак из гугл хрома?

Есть множество интересных файлов, доступных через chrome://resources/* используя гугл хром

На Linux Это содержание в /opt/google/chrome/resources.pak, Я знаю, что могу получить все источники с http://chromium.googlecode.com/svn/trunk/ но я хотел бы распаковать resource.pak файл.

file resources.pak отчеты просто барахло.

Просто чтобы быть ясным, вопрос не в том, откуда взять эти ресурсы. Вопрос в том, что такое формат файла resources.pak и как его распаковать?

4 ответа

Решение

Взяты из https://groups.google.com/a/chromium.org/forum/?fromgroups=

Номер версии 4 байта
4 байта число ресурсов
1-байтовая кодировка

Для каждого ресурса:
2-байтовый идентификатор ресурса
Смещение ресурса 4 байта в файле

В конце есть дополнительная запись ресурса с идентификатором 0, указывающим конец последнего ресурса (который по сути является длиной файла)

Этот модуль Python может распаковывать и перепаковывать файлы:
data_pack.py от grit-i18n

Chrome-pak-customizer (на который указал MrU в комментариях выше), кажется, хорошо работает для распаковки Chrome .pak файлы. Если вы используете Windows, вы можете скачать и распаковать chrome-pak.7z со страницы релизов. Затем бросьте .pak файл на unpack.bat скрипт для его распаковки.

Для других платформ, похоже, вам понадобится собрать инструмент из исходного кода.

Я обнаружил, что 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.

Этот файл python в хроме может помочь. https://source.chromium.org/chromium/chromium/src/+/main:tools/grit/pak_util.py

Вам нужно скачать весь каталог, а затем запустить его.

пример:

      pak_util.py extract resources.pak -o /tmp/rescources.out/
Другие вопросы по тегам