Необходимо распаковать ресурсы с игры (Android) |
Здравствуйте, гость ( Авторизация | Регистрация )
Необходимо распаковать ресурсы с игры (Android) |
22.06.2016, 17:59
Сообщение
#21
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
Есть еще такой прикол как порядок байтов поэтому иногда можно и не увидеть текст пока не отзеркалишь байты. ааа, за это тоже читал, что иногда читается в обратном порядке. Я тут ещё наковырял пару архивов со старых версий. Если я правильно понял, то это архивы с событий (event'ы) ежемесячных. Они весят чуть меньше. Если это как-то поможет, то вот: Сообщение отредактировал Rezzoxe - 22.06.2016, 18:00 -------------------- |
 
|
|
|
|
22.06.2016, 18:16
Сообщение
#22
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Rezzoxe, поможет =)
|
 
|
|
22.06.2016, 19:44
Сообщение
#23
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
не могу сказать пока совершенно точно но ооочень сильно вероятно что я был в корне не прав и изобретаю велосипед с разбором. Похоже на то что весь этот дат файлик ни что иное как следствие zlib компрессии, есть заголовки 0x78 0xDA которые обычно говорят о том что это zlib при этом с модификацией.
Нужна помощь того кто сталкивался или применял zlib. Попробовал классически прогнать через злиб, вот что получилось но 90% это не то что должно быть =) |
 
|
|
22.06.2016, 22:04
Сообщение
#24
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
Попробовал классически прогнать через злиб, вот что получилось но 90% это не то что должно быть =) Это который архив был? Если который с текстурками, то печалька... хотя я думаю в каждом архиве текстурки должны быть... Остаётся надеяться на помощь abracumner'a, если он конечно согласится =) -------------------- |
 
|
|
22.06.2016, 22:49
Сообщение
#25
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Rezzoxe, с текстурами. Я бы помог дальше но мои познания закончились я так глубоко не лазил и опыта не имел =(
|
 
|
|
23.06.2016, 12:04
Сообщение
#26
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
|
 
|
|
23.06.2016, 12:24
Сообщение
#27
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Rezzoxe, бери архив который я прикрепил выше с выдранными данными, фильтруй от самых тяжелых до легких и колупай любым просмотрщиком raw изображений к примеру на
Кажись допедрил почти до всего, попробую сегодня-завтра распаковщик написать удобный. Осталось понять в каком точно формате пиксели хранятся, загадка точно кроется в заголовке FileHeader в полях unknown1-2-3-4 . Но впринципе дело в шляпе уже. Сообщение отредактировал jamakasi - 23.06.2016, 13:00 |
 
|
|
23.06.2016, 15:37
Сообщение
#28
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
Кажись допедрил почти до всего, попробую сегодня-завтра распаковщик написать удобный. jamakasi, ты прям сделал мой день! -------------------- |
 
|
|
24.06.2016, 15:08
Сообщение
#29
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Поделюсь прогрессом. Опять же темплейт для 010 Editor.
CODE struct Header{ char null[4] <hidden=true>; int fileCount; int unknown1 <bgcolor=0x0000FF>; int unknown2 <bgcolor=0x0000FF>; char null1[4] <hidden=true>; } header; struct FileHeader{ short width; short height; int unknown1; int unknown2; char unk[4]; int unpacketDataSize; //x previos int zlibDataLenght; //x-(x previos) } fileHeader[ header.fileCount ]; struct ZlibContent(int dataLen){ byte data[dataLen]; }; ZlibContent data(fileHeader[0].zlibDataLenght); local int i; for( i = 1; i < header.fileCount-1; i++ ) ZlibContent data(fileHeader[i].zlibDataLenght-fileHeader[i-1].zlibDataLenght); ZlibContent data(24); //magick size 0_o/ Dont trust, read to EOF В общем очень веселый контейнер оказывается, сейчас абсолютно точно нахожу все файлы внутри с точностью байт в байт. unpacketDataSize (размер файла в байтах после декомпрессии архива) веселый оказался, оказалось что надо брать его из предыдущего заголовка. zlibDataLenght (число байт файла в контейнере) вообще веселый, рассчитывается как Х-(Х предыдущего заголовка). Совершенно точно узнал что первый файл (нулевой) вообще фейковый полностью и представляет из себя 524288 нулей , им нужен был только заголовок от него для магии с последующими заголовками. Так же волшебный и самый последний файлик но его прикола я еще не понял. Для распаковщика осталось только дописать распаковку zlib архивов и все . А если получится узнать назначение переменных unknown1 и unknown2 то еще и запаковщик и тогда можно будет делать моды как минимум текстурные уже. |
 
|
|
24.06.2016, 15:32
Сообщение
#30
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
Я же правильно понимаю что анпакер будет распаковать сразу в правильный формат (пнг и пр.), а то повозился я на этом raw pixels и охерел )).
Некоторые файлы удалось подобрать, а некоторые ни в какую... -------------------- |
 
|
|
24.06.2016, 16:38
Сообщение
#31
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Rezzoxe, я как минимум нашел точные widthXheight для каждой текстуры и предположительно битность(похоже все 24 битные), т.е. на данный момент уже могу вытащить все файлы и в названии к примеру писать ширина_высота.raw. Но скорее всего получится и заголовки приделать обратно и тогда будут уже именно картинки нормальные в своих форматах.
Некоторые файлы удалось подобрать, а некоторые ни в какую... Это кстати следствие хитрожопости авторов упаковщика, там есть ложные заголовки архивов на которых я много раз спотыкался, сейчас вроде бы все нормально, по крайней мере все байты количественно покрываются точно без лишних и недостающих. |
 
|
|
26.06.2016, 14:49
Сообщение
#32
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
В общем наговнокодил немного. Получился распаковщик.
Запускаешь прогу, жмешь File->Open , выбираешь архив с текстурами. В дереве слева отобразятся все файлы внутри, особо ничего интересного больше нет(в основном себе служебную инфу на форму толкал). Дальше жмешь File->SaveAllContent. Выбираешь папку куда распаковать. В папке сохраняются се текстуры с именем вида "Номер_ШиринахВысота_ЦветоваяПалитра_ЦветаПикселей.raw" . Т.е. на том сайтике можешь скармиливать эту текстуру и выставлять все по заголовку файла. Разобрал к сожалению далеко не все заголовки поэтому у некоторых файлов вместо "_ЦветоваяПалитра_ЦветаПикселей_" будет "_цифраХцифра". Комбинация этих 2х цифр предположительно определяет палитру и цвета. Если очень хочется то можешь открыть исходники и в файле ContentHeader.java в функции private void identityPixelFormat() после 79 строки аналогично продолжить заполнение, принцип я думаю максимально понятен "if(pixelformat1==770 && pixelformat2==48) pixelFormatStr="RGB32-RGBA";" На данный момент темплейт выглядит так: CODE struct Header{ char null[4] <hidden=true>; int fileCount; int headerSize; int unknown2 <bgcolor=0x0000FF>; char null1[4] <hidden=true>; } header; struct FileHeader{ short width; ; short height; short pixFormat1; //pixel format? short pixFormat2; //pixel format? short un3; short un4; char unk[4]; int unpacketDataSize ; //x previos int zlibDataLenght ; //x-(x previos) } fileHeader[ header.fileCount ]; struct ZlibContent(int dataLen){ byte data[dataLen]; }; ZlibContent data(fileHeader[0].zlibDataLenght); local int i; for( i = 1; i < header.fileCount-1; i++ ) ZlibContent data(fileHeader[i].zlibDataLenght-fileHeader[i-1].zlibDataLenght); ZlibContent data(24); //magick size 0_o/ Dont trust, read to EOF т.е. почти все разобрано. Прога делает следующее. Открывает файлик с текстурами(тащит и длцшные), распарсивает все загловки, вырезает все файлы, разархивирует и сохраняет. Есть вариант подкрутить еще функционал. Так же если у кого то есть степень магистра по ImageMagick, а точнее по ее утилите convert то можете помочь человеку дописав батник через который сконвертить все текстуры в нормальный формат типа png, я к сожалению не осиливаю эту монстроозную тулзу. Чуть не забыл, архив с распакованными файлами textures_android.dat и TrialsTexturesDL_android.dat |
 
|
|
26.06.2016, 15:22
Сообщение
#33
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Rezzoxe, Содержимое content.dat нужно? А то меня прикололо это занятие =)
Хм, в content.dat тоже схожая структура похоже. Сейчас поискал в нем по сигнатурам zlib заголовка, выцепил 1 блок и распаковал, в итоге оказался файлик а точнее некий скрипт текстовый. Распаковать в общем тоже реально. Ага, вскрыл полностью правда сырым способом поэтому некоторые файлы могут быть битыми. Сообщение отредактировал jamakasi - 26.06.2016, 15:44 |
 
|
|
26.06.2016, 16:17
Сообщение
#34
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
Rezzoxe, Содержимое content.dat нужно? А то меня прикололо это занятие =) Вообще в идеале нужно всё в правильном формате... скрипты, изображения, звук и прочее... Но достаточно будет только изображений и звука... Музыка в xm формате Послушал, это эмбиенты с трасс... отлично! Скрипты тоже глянул... да это именно игровые скрипты отвечающие за геймплей. К примеру сколько монет давать за преодоление очередного чекпоинта. -------------------- |
 
|
|
26.06.2016, 16:44
Сообщение
#35
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Вообще в идеале нужно всё в правильном формате... скрипты, изображения, звук и прочее... Вообще у меня складывается впечатление что текстуры реально хранятся в игре в сыром виде, т.е. нет никаких png или dds а только то что я достал. Интересен еще момент с названиями файлов. Тут либо они хранят их прямо с рандомными хэшами либо где то есть файлик где каждому хэшу сопоставлено читаемое название файла. |
 
|
|
26.06.2016, 16:46
Сообщение
#36
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
Если это как-то поможет 2
Кстати, пока ты мучался с блоками, с extractor.ru и exelab.ru кинули по анпакеру: Пример: -a filename.dat Folder Folder - по желанию Пример: -pkware- -lzo- -ucl2b- -ucl2d- -skip1500 filename.dat где 1500 - Если будет много мелких лишних файлов, то skip можно увеличить или, наоборот, уменьшить, если не извлекаются какие-то мелкие нужные. Оказывается такие анпакеры уже были, но опять же они распаковывают в сыром формате. -------------------- |
 
|
|
26.06.2016, 16:54
Сообщение
#37
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Rezzoxe, Ну зато я разрешение текстур знаю и цветность в принципе тоже =)
|
 
|
|
26.06.2016, 16:59
Сообщение
#38
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
Rezzoxe, Ну зато я разрешение текстур знаю и цветность в принципе тоже =) Вот и я им про это... те анпакеры видимо просто универсальные для такого формата... -------------------- |
 
|
|
26.06.2016, 17:10
Сообщение
#39
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
Rezzoxe, ну да, те анпакеры просто ищут начало zlib архива, отрезают кусок до следующего начала и распаковывают.
|
 
|
|
26.06.2016, 17:22
Сообщение
#40
|
|
Игроман Репутация: 202 Группа: Участник Сообщений: 918 Награды: 6 Регистрация: 17.10.2009 |
jamakasi, а с архивом текстур уже полностью разобрался?
-------------------- |
 
|
|
Текстовая версия | Сейчас: 29.03.2024, 01:46 |