PAINKILLER PAK-файлы???
Автор
Magic Team
, May 19 2004 15:49
Сообщений в теме: 6
#1
Отправлено 19 May 2004 - 15:49
Может кто подскажет, чем зашифрованны или закодированны имена файлов в архиве PAK?
Структура такова:
*** Формат PAK
В начале заголовок:
PAKHeader: record
id: byte; //Идентификатор формата всегда "1", для файла sounds.pak "0".
FATOffset: LongInt;
end;
По смещению FATOffset находится таблица смещений и размеров.
Вот описание записи в таблице:
FATRecord: record
TotalFiles: LongInt; // Кол-во файлов в архиве.
Name: array[1..4]of char; // Длина имени файла.
Offset: LongInt; //Смещение до файла
RealSize: LongInt; //Реальный размер файла.
CompressedSize: LongInt; //Сжатый размер файла.
end;
Метод сжатия файлов: "Zlib".
Метод кодировки имен файлов пока неизвестен!
:cry:
Структура такова:
*** Формат PAK
В начале заголовок:
PAKHeader: record
id: byte; //Идентификатор формата всегда "1", для файла sounds.pak "0".
FATOffset: LongInt;
end;
По смещению FATOffset находится таблица смещений и размеров.
Вот описание записи в таблице:
FATRecord: record
TotalFiles: LongInt; // Кол-во файлов в архиве.
Name: array[1..4]of char; // Длина имени файла.
Offset: LongInt; //Смещение до файла
RealSize: LongInt; //Реальный размер файла.
CompressedSize: LongInt; //Сжатый размер файла.
end;
Метод сжатия файлов: "Zlib".
Метод кодировки имен файлов пока неизвестен!
:cry:
#2
Отправлено 19 May 2004 - 16:24
Кстати, это не первый случай, когда шифруются заголовки. Мне попалась как то игра... С файлами самими все ok, смещения в FAT читаются, а вот то, что должно представлять из себя имена файлов... :cry:
#3
Отправлено 19 May 2004 - 17:56
Полюбому они дешефруют имена файлов!
А вот как нам расшифровать, это вопрос! Будем надеяться на чудо!
А вот как нам расшифровать, это вопрос! Будем надеяться на чудо!
#5
Отправлено 06 June 2004 - 13:52
А на русском никто не обьяснит как текстурик из игры выдрать?
#6
Отправлено 07 June 2004 - 10:05
Имена шифруются просто -
name[i] ^= (i + nameLength) * 2 + (nameLength % 5) + recordIndex
где
i - Индекс символа имени
nameLength - длина имени
recordIndex - индекс записи в fat
name[i] ^= (i + nameLength) * 2 + (nameLength % 5) + recordIndex
где
i - Индекс символа имени
nameLength - длина имени
recordIndex - индекс записи в fat
#7
Отправлено 07 June 2004 - 10:07
id: byte; //Идентификатор формата всегда "1", для файла sounds.pak "0".
Да, и это кстати не идентификатор формата, а флажок - зазиповано/незазиповано. В sounds.pak все записи не пожатые лежат.