Опубликовано: 17 июл 2010 Итак, что известно на данный момент:Текст хранится в *.tlk файлах (английский - strings.tlk). Формат практически тот же, что и в Dragon Age Origins, за исключением кодировки (Windows-1252, а не UTF-8). Вот очень простой конвертатор в XML и обратно используя библиотеку GffTlk. Обращу внимание, для конвертации обратно файл должен называться strings_new.xml, а оригинальный strings.tlk присутствовать в папке.Большинство самых вкусных файлов игры находятся в test.herf. В test_[буква_языка] находится всё, что относится к конкретному языку игры.Что нам пока известно о herf-архивах:Первые четыре байта, похоже, сигнатура.По оффсету 0x04 находится счётчик файлов (dword)Начиная с оффеста 0x08 повторяются dword блоки, количество которых соотв. количеству файлов:-- Скорее всего ID, но точно неизвестно (dword)-- Размер файла (dword)-- Оффсет файла (dword)За исследование формата отдельное спасибо softman'у и vladikcomper'у.Интересно то, что имена файлов хранятся в файле внутри архива - erf.dict (простите за тавтологию, но вот такая вот у нас матрёшка). Формат его куда более прост: первые 8 байтов совпадают с herf, затем повторяются блоки с (возможно) ID'ом файла (dword) и именем (string).vladikcomper также написал распаковщик - Stupid HERF-unpacker v0.1, имена файлов по причине, описанной выше, не учитываются.Для распаковки американского test.herf с сохранением имён можно использовать этот простой скрипт для QuickBMS:# test.herf from Sonic Chronicles USA# script for QuickBMS http://aluigi.org/papers.htm#quickbmsgoto 0x4get FILES long print "%FILES% files in archive"goto 0xCset CURNAME 45059704 ;for i = 0 < FILES savepos CURRENT get SIZE long get OFFSET long goto CURNAME get NAME string math CURNAME += 132 math CURRENT += 0xC goto CURRENT log NAME OFFSET SIZEnext i 0 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах