Распаковка псевдо архива

Тема в разделе "WASM.BEGINNERS", создана пользователем walking_alone, 26 ноя 2008.

  1. walking_alone

    walking_alone New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    2
    Всем привет. У нас небольшая команда, и мы хотим создать продолжение любимой игры. Мы пробовали в 3d,но получилось ужасно. Хочется старой доброй изометрии. К сожалению, среди нашей команды мало художников. Поэтому мы решили взять файлы из оригинальной игры и немного доработать в нужном направлении.

    Игры называется "Князь 2", инам нужно распаковать архивы с содержимым.
    http://konung.1c.ru/konung2/info.html

    В папке с игрой содержатся архивы с разрешением *.res
    Это не обычный архив, никакие распаковщики его ни берут, не специальные для res-файлов, ни ultimate extractor. Я узнал, что это псевдо-архив.

    Как распаковать такой? Может кто-нибудь подсказать что делать? Буду очень благодарен от лица всех фанатов. Ничего путного по псевдоархивам найти не могу. Подскажите в каком направлении искать, может быть кто с этим уже сталкивался?

    wink.gif

    Вот файлы:
    http://narod.ru/disk/4015775000/INTERF.RES.html
    http://narod.ru/disk/4015420000/QUESTS.RES.html
    http://narod.ru/disk/4015857000/HEROES.RES.html
     
  2. mupsy

    mupsy New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    55
    a restorator не прокатит?
     
  3. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    ребята. возьмите WinHEX или HIEW и посмотрите - там разобраться за пол минуты со структурой можно, а распаковщик ищите в самой игре ИМХО она то с ними как-то работает!
     
  4. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    walking_alone
    Если смотреть файл heroes.res, то здесь:
    000033E0-4938: C0 49 00 00 84 FD 00 00 │ BB B4 01 00 58 58 02 00
    похоже таблица смещений на картинки(или даже на группу картинок).
    В начале картинки идёт то ли палитра, то ли еще какая-то таблица из dword'ов длиной 1B0h байт.
    Потом идёт word=256, за ним идёт word=N0, а далее N0 word'ов, про которые ничего сказать не могу.
    Далее идут строки картинки, в начале каждой строки есть word который похоже указывает смещение в видеопамяти относительно базовой точки, по которому нужно скопировать точки картинки (впрочем если игра поддерживала разные разрешения это предположение не верно). Точки копируются пока не встретится байт с кодом 0, а за ним начинается следующая строки. По идее количество строк должно быть равно N, хотя я это не проверял. Далее опять идёт word=256, word=N1, и N1 word'ов и опять строки картинки, может быть следующая фаза анимации, но это я тоже не проверял.
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    а ну-ка, покажи мастер класс! я вообще что-то не могу представить, как по 16-ричному представлению файла можно разобраться с его структурой, не глядя на распаковщик
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    walking_alone
    Выложи экзешник для начала, смотреть нужно в первую очередь его, а не ресурсы. Вряд-ли они прозрачно устроены, хотя всякое бывает.
    ЗЫ
    Этой теме место в Research.
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    MSoft
    см. и учись у Black_mirror, а мне время терять не хочется описывая все это.
    хотя увидеть зависимости типа длинна массива\массив, оффсет\данные или размер\таблица - весьма просто (вроде все, но может что-то забыл, а остальное под типизацию не попадает - надо смотреть конкретный пример, чего мне описывать не охото)
    , а вот, еще может быть оффсет\файл ну и тогда требуется лишь знание некоторых заголовков файлов, чтобы бегло просмотреть или определить его размер и тип, но это сам поищи тут http://google.com
     
  8. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Похоже что в картинках после 1B0h байт идут записи следующей структуры(их может быть несколько):
    word=256
    word=N - число строк
    word[N] - длины строк в байтах
    а дальше друг за другом идут сами строки.
    Думаю что в первых 1B0h байтах находится палитра, только вот не знаю как её разобрать.
     
  9. walking_alone

    walking_alone New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2008
    Сообщения:
    2
    вот файлы exe, cfg,dll:
    http://narod.ru/disk/4028859000/Konung%202.rar.html
     
  10. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    0-33DF: таблица структур длинной по 0x30 байт. В каждой структуре первое слово - количество изображений, а далее идут их индексы.
    33E0-49BF: таблица изображений, каждое двойное слово задаёт смещение от начала файла.

    49С0: первое изображение. Изображения идут до самого конца файла.
    Структура изображения:
    0-1DF: таблица 4х байтовых структур. Первое слово в каждой структуре это смещение следующего фрагмента изображения от начала таблицы, а вот назначение второго слова пока не ясно.
    За таблицей идут сами фрагменты(количество фрагментов совпадает с количеством ненулевых записей в предыдущей таблице). Про их структуру я пока ничего нового не выяснил. То есть там есть слово задающее число строк, массив длин строк, и далее сами строки. Предположительно первые 1 или 2 байта строки могут быть смещением по X(и/или Y) откуда нужно выводить строку. Хотя иногда попадаются фрагменты в которые эти байты одинаковые для нескольких строк. В общем дело ясное что дело тёмное.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    walking_alone
    лучше художников найдите и дурью не майтесь:))
     
  12. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    walking_alone
    Этот exe смело можно в помойку. Времени на прохождение защиты нет. Есть какой-нибудь уже раскрытый экзешник? Может в Инете что-нибудь есть?
     
  13. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    walking_alone
    Вообще идеальный вариант конечно был бы проследить путь который проходят данные от CreateFile и до вывода на экран. Но можно подключиться и после загрузки игры и поискать в памяти таблицу смещений. Хотя она может быть уже преобразована из файловых смещений в адреса памяти, в этом случае можно попробовать поискать начало самой картинки или одну из её строк. Правда картинка может оказаться и не загруженной в память. Тогда ищем другую картинку. Далее ставим аппаратный бряк на чтение памяти, ну и когда он сработает смотрим как картинка копируется. Но если с отладчиком не особо дружите, то есть и другой путь.

    Путь маньяков:
    Сохраняем игру. Дальше модифицируем файл заменяя во всех картинках точки строк на какой-то фиксированный для каждой картинки цвет(про резервную копию не забываем!). Ноль в конце строк трогать не стоит. Загружаем игру, смотрим на это безобразие. Находим на экране самую большую одноцветную область. Восстанавливаем файл из резервной копии, только теперь меняем лишь половину картинок. Если область осталась такого же цвета как была, то опять восстанавливаем файл, только в этот раз меняем половину от изменённых в прошлый раз картинок, иначе меняем половину картинок из той половины, которую не меняли. Проделываем это до тех пор, пока не определим что за индекс имеет интересующая нас картинка(учитывая что у нас 1365 картинок, это проделать нужно будет 11-12 раз). Когда нужную картинку нашли, то дальше уже издеваемся над ней. Например каждому её фрагменту присваиваем свой цвет. Потом красим чётные строки в один цвет, нечётные в другой. Потом то же самое делаем с точками строки. Ну и так до тех пор пока не поймём как её фрагменты и строки выводятся на экран. Когда поймем как выводятся строки находим подходящий фрагмент и присваиваем его точкам значения от 1 до 255, но так чтобы было понятно где какая. Делаем скриншот, вырезаем из него этот блок и сохраняем в bmp, чтобы узнать какая в игре была палитра. Ну а дальше пытаемся написать программу которая позволит просматривать все картинки из файла.

    Всё написанное относится к файлу heroes.res, что творится в других я не смотрел.
     
  14. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    walking_alone
    Кстати, нет ли в игре еще каких-нибудь DLL (экзешник что-то маловат :), вот я и подумал, что может быть работа с ресурсами вынесена в отдельную библиотеку). Если есть, то неплохо было бы поискать в них имена interf.res, heroes.res, quests.res.