![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
На форуме Extractor.ru товарищ Axsis утверждал, что файлы там не запакованы, однако, судя по тому, что в Интернете нигде нет распаковщика и народ жалуется, что никто не может достать оттуда музыку - следовательно не всё так просто.
Скачал демку: _ttp://www.ag.ru/games/soldier-elite-zero-hour/demos/14368 Увы, отдебажить игру не могу, т.к. она падает до того места, где расшифровываются файлы - при инициализации графики (чего-то у меня в видеокарте нехватает, поэтому получаю ошибку чтения памяти по адресу 0x0000000c). Что успел отдебажить, так это открытие файлов. Кстати, кто тоже будет ковырять демку - там после первого запуска появится файл в каталоге /bin/, где можно поменять настройки и запустить игру в окне, чтобы отлаживаться не мешала. Так вот, всё что я смог узнать: 1) При открытии файла игра считывает 20 последних байт с конца: DWORD sign; // 0x20031031 DWORD vers; // 0x00000004 DWORD off1; DWORD off2; DWORD unkn; а) Первые два поля игра проверяет именно на эти значения - первое это сигнатура, второе - версия. б) offs1 < offs2, в файле textures.zap разница между ними 32 байта и оба смещения указывают примерно на конец файла (они оба проверяются, правда не понял с каким значением - с размером файла?). в) unkn - неизвестное поле, но небольшое. В том же textures.zap оно было равно 0xDB (но это точно не количество файлов - файлов там меньше было - штук 10). 2) Дальше игра, убедившись что файл верный, делает FileMapping() + MapView() всего файла, отчего ставить бряки на ReadFile() становится бессмысленным. (*улыбается*) 3) Интересен алгоритм определения архива свой/чужой - там также проверяется, а не .ZIP ли это архив. И, если .ZIP, то обрабатывается другим куском кода уже как .ZIP. В целом структура .ZAP похожа на .ZIP из чего делаю вывод, что: ZAP = ZIP Aurora Package Напомню, структура .ZIP выглядит примерно так: PK-заголовок|Файл-1|PK-заголовок|Файл-2|PK-заголовок|Файл-3|...|PK-заголовок|Файл-N А далее снова идут PK-заголовоки, но уже без файлов ("Файл-#" - это тело сжатого файла). Так вот, такое ощущение, что в .ZAP оставили именно этот хвост в конце с заголовками, а начало архива зашифровано. Причём ключ либо записан в самом архиве, либо игра генерит его как-то по другому (по имени, например), потому что все .ZAP архивы начинаются по разному. Какое шифрование - стандартное для .ZIP или своё - не знаю. Затрудняет это всё к тому же то, что файлы, видимо, сжаты, а уже потом зашифрованы. В упомянутом файле textures.zap в начале должен был идти .TGA файл - так вот, количество одинаковых полей по три байта (24 BPP видимо) в начале впечатляет. Однако, я перепробовал все XOR от 0 до 255, также rol и даже инверсию битов в байте слева на право - ничего хорошего так и не вышло. Кстати, в одном файле там вообще есть поле байт, эдак, под 200, если не больше, просто одинакового байта. Возможно, шифрование как-то меняет ключ или от чего-нибудь зависит (кстати, шифровать на предыдущий байт, как было в Runaway 2, я тоже пробовал). В файле с музыкой я нашёл две OggS сигнатуры незашированные. Но это два жалких фрейма, а не целые .OGG файлы. 4) Для тех, кто заинтересуется по адресу .692DE0 идёт чтение архива описанное в 1). Кто-нибудь желает помочь? |
![]() ![]() |
Siberian GRemlin |
![]()
Сообщение
#2
|
![]() Advanced Member ![]() ![]() ![]() Группа: CTPAX-X Сообщений: 537 Регистрация: 4-February 08 Пользователь №: 2 Спасибо сказали: 222 раз(а) ![]() |
Думаю, полная версия с последним обновлением вываливаться не должна.
|
-=CHE@TER=- |
![]()
Сообщение
#3
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,371 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 318 раз(а) ![]() |
Думаю, полная версия с последним обновлением вываливаться не должна. А с демо можно как-нибудь обойтись?.. А то качать полную версию... уф.Игра, как я понимаю, в качестве ресурсов поддерживает и zip, правильно? Тогда, возможно, пираты после "локализации" не заморачивались с родным форматом и запихали всё в zip. И ко мне в тот раз попала такая вот пиратка. Это так, лишь предположения... Кстати, да, мысль.Как бы там ни было в прошлый раз, сейчас глянул демку с ag.ru А я там демки не нашёл - поэтому ссылку и привёл... добавили уже что-ли?..Трудно искать чёрную кошку в тёмной комнате, особенно, если её там нет... У меня разрыв шаблона, честно говоря. Просто на форуме Extractor.ru есть ссылка на MegaUpload, в которой выложен какой-то .OGG файл. Так вот я на него STUNS натравливал и ничего не получилось извлечь. Кстати, я так понял, что тот .OGG файл это извлечённый при помощи Watto'вского MultiExtractor или как он там - т.е., по идее, файл должен был бы быть нормальный...![]() Это я про шифрование. Его там нет. Обычный deflate, просто без 2-х байт заголовка, STUNS справляется на ура. Поэтому я вариант со STUNS даже не проверял... Спасибо, я тогда ещё раз проверю, может всё гораздо проще. Так стоп. У меня двойной разрыв шаблона - только что проверил STUNS на том файле и он РАСПАКОВАЛ! Походу в конце 2005 года я ещё с распаковкой zlib не так активно работал, поэтому STUNS видимо даже не пробовал. Ох, ну и дела... ДОБАВЛЕНО: Таблица файлов довольно мудрёная, но структуру уже почти полностью разобрал. Если кто-то соберётся писать распаковщик могу подсказать по формату. Давай! Был бы признателен - меньше времени бы потратил. В больший файлах она, зрительно, как-то делится на несколько. Зачем так сделали я не понял.ДОБАВЛЕНО2: Гугл по запросу "zap unpacker" выдаёт гору ссылок на распаковщик для Infernal, в котором, как оказалось, тот же самый zap. (по крайней мере из демки Aurora Watching всё распаковал). Это не наш метод. © (*улыбается*)Вроде как страничка автора, ложка дёгтя - он требует горячо любимый .net framework ![]() Кстати, что-то я протупил - я именно по названию игры искал и ничего поэтому не нашёл путного. |
![]() ![]() |
Упрощённая версия | Сейчас: 1st May 2025 - 01:36 |