IPB

Добро пожаловать, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Times of Conflict [.DAT]
PavelDAS
May 6 2026, 07:54
Сообщение #1


Advanced Member
***

Группа: Authorized
Сообщений: 38
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 12 раз(а)




Файл с пиратки.
https://wdfiles.ru/2aVzq


Не пойму как к нему подойти. Есть какие-то строки в середине, но впечатление, что зашифровано.


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 6 2026, 19:27
Сообщение #2


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,437
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 328 раз(а)



Пришлось игру ставить - там без отладчика ничего не получилось бы, ибо два шифрования (отдельное для таблицы размещения файлов с 2 Kb статических таблиц для расшифровки, отдельное для самих файлов с алгоритмом попроще), плюс какой-то извращённый способ хранения таблицы размещения файлов в архиве (TPF0 - скомпилированные файлы .DFM от Delphi! там и некоторые ресурсы в этом же формате! наркоманы писали эту игру!). Ах, да, а ещё там некоторые файлы сжаты, но я до этого ещё не дошёл, так что не знаю что там за сжатие.
Короче, я файл посмотрел, но над распаковщиком придётся попотеть, будет не сразу и не быстро.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
May 7 2026, 14:20
Сообщение #3


Advanced Member
***

Группа: Authorized
Сообщений: 38
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 12 раз(а)



Пираты как-то разобрали smile.gif
Руссобитовцы прилепили хук в виде dll: Dll_Hook_p.dll


--------------------
|__--__|
***|***
___|___
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 7 2026, 15:25
Сообщение #4


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,437
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 328 раз(а)



Т.к. я с нормальным распаковщиком ещё повожусь, то расскажу как распаковать, кому уж совсем невтерпёж.

1. Открываем файл "DATA01.DAT" читаем первые 8 байт в такую структуру:
CODE
typedef struct {
  uint32_t offs;
  uint32_t size;
} dat_head;


2. Смещаемся на offs байт от начала и читаем оттуда size байт - это зашифрованная таблица размешения файлов (TOC = Table of Contents). Кстати говоря, как проверить, что архив целый и, вообще, это нужный нам архив, а не что-то левое: offs+size == filesize("DATA01.DAT").

3. Расшифровываем TOC при помощи криптографического алгоритма BlowFish (там стандартная реализация). Ключ для инициализации - строчка "Conflit Rules" (без ковычек и завершающего нуля, а также обратите внимание, что слово "Confli_c_t" написано с ошибкой).

3. Получаем тот самый скомпилированный бинарный .DFM в качестве результата. Если сохранить, например, в "head.dfm" расшифрованный TOC, затем в Delphi добавить к проекту, то получим примерно такой текст:
CODE
object TDataModule
  OldCreateOrder = False
  Height = 0
  Width = 0
  object DFC: TDataFatComponent
    CollectionFileInfo = <
      item
        FileName = 'Data\Effettable\Table_BmpLineaire.b16'
        Position = 8
        Size = 32780
        Compress = False
        Criptage = etcSimpleCryptage
        HasCRC = True
        EugenCRC = 206493871
      end

      // ... тут будет много-много таких же записей item-end ...

      item
        FileName = 'Data\Effettable\Table_exemple3.bmp'
        Position = 163303690
        Size = 49208
        Compress = False
        Criptage = etcSimpleCryptage
        HasCRC = True
        EugenCRC = 67199876
      end>
  end
end


4. Поле "Criptage" может быть трёх типов:
etcNoCryptage - файл не шифруется (не используется)
etcSimpleCryptage - простое шифрование uint32_t rol 8 (у всех файлов)
etcBlowFish - BlowFish, похоже, что используется только для TOC

Расшифровка etcSimpleCryptage выглядит так:
CODE
void decrypt_simple(uint8_t *p, uint32_t l) {
uint32_t *d;
  if ((p) && (l >= 4)) {
    d = (uint32_t *) p;
    l /= 4;
    while (l--) {
      // делаем обратную операцию - uint32_t ror 8
      *d = (*d >> 8) | (*d << 24);
      d++;
    }
  }
}


5. После того как получили полную таблицу файлов, то распаковка выглядит так:
а) Идём на смещение "Position" и читаем оттуда "Size" байт.
б) Расшифровываем прочитанное, если есть шифрование (см. про "Criptage" выше).
в) Распаковываем файл, если "Compress = True".
г) "HasCRC", должно быть, отвечает за то, что у файла посчитана контрольная сумма в поле "EugenCRC", но как она считается я не знаю, да и для распаковки не нужна (и непонятно от чего считать - от начальных данных или когда уже всё расшифровано и распаковано).

6. Что за сжатие используется, когда "Compress = True" мне неизвестно. Вижу только, что первые 4 байта (uint32_t) это, вероятно, размер распакованных данных. Судя по данным, там, скорее всего, какая-то вариация LZW очередная. Сжато только некоторое количество .DFM и .IFF файлов. Если кто-то знает что за сжатие - то пишите. Потому что игра на Delphi, там ещё тот шлакокод, плюс IDA почему-то зависает при попытке проанализировать код исполняемого файла, так что я даже толком в дизассемблере посмотреть не могу, приходится останавливать анализ и только выбранные блоки, адреса которых беру из отладчика, декомпилировать.

7. По поводу пиратов - либо игра не проверяет и не использует "EugenCRC", либо пираты взломали игру, чтобы она не вылетала с ошибкой при несовпадении контрольной суммы (я не видел исполняемый файл игры, а только тот архив, что ты выложил - я смотрел оригинальную версию игры). До шифрования файлов они, вероятно, сами догадались (оно не сложное), а вот таблицу расмещения файлов не осилили или им было это всё лень собирать и разбирать, потому что таблица совпадает с официальной английской версией файла "DATA01.DAT".

8. По поводу картинок, у них такой формат:
uint32_t - неизвестно // у .BFF и .IFF файлов этого поля нет, только у .B16
uint32_t - ширина
uint32_t - высота
uint16_t [ширина*высота] - данные изображения в 16 битах // у .IFF каждый пиксель uint32_t
uint32_t - непонятно что, может присутствовать у некоторых .IFF
Но форматы там разные есть. Плюс встречаются не только .BMP, но они же с другим расширением - смотри по сигнатуре файла, если на "BM" начинается, значит, это .BMP.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
May 8 2026, 07:21
Сообщение #5


Advanced Member
***

Группа: Authorized
Сообщений: 38
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 12 раз(а)



https://wdfiles.ru/folder/21295/Games_-_Times_of_Conflict
Версии от Руссобита + nocd, Века, 7-го волк.
+ патч
Работали разные проггеры, может что поможет. Патч собран таким же способом.


--------------------
|__--__|
***|***
___|___


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 9 2026, 21:28
Сообщение #6


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,437
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 328 раз(а)



Спасибо конечно, но алгоритм-то всё равно разбирать.
Всё, нашёл и разобрался что там за сжатие: LZ2K.
Даже нашёл код распаковки в Интернете.
Постараюсь программу доделать и в ближайшие дни на сайт добавить.
Сразу оговорюсь, что код парсинга .DFM там будет очень ограниченный, ибо меня ломает для частной задачи писать полноценный парсер.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 10 2026, 18:12
Сообщение #7


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,437
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 328 раз(а)



Times of Conflict tools

Просьба протестировать и написать если всё нормально - я игру удалю, а то место занимает.


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
May 11 2026, 14:13
Сообщение #8


Advanced Member
***

Группа: Authorized
Сообщений: 38
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 12 раз(а)



QUOTE(-=CHE@TER=- @ May 10 2026, 18:12) *

Times of Conflict tools

Просьба протестировать и написать если всё нормально - я игру удалю, а то место занимает.

Триада и Век -- отлично.
Волк и Руссобит -- ошибка.

У Триады и Века картинки конвертируются.
BigTexInGame_Fonts.b16 немного странный, но, возможно, переводчики его так перерисовали

p.s. хостинг немного цвет исказил.


--------------------
|__--__|
***|***
___|___


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
-=CHE@TER=-
May 11 2026, 16:34
Сообщение #9


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,437
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 328 раз(а)



Как же я не хотел это качать...
Обновил программу и добавил поддержку.

"7 Волк" - ухитрились разобрать формат архива и перепаковать, но не справились со шрифтами, а не распаковывалось, потому что они 16 байт копирайтов в конец архива добавили из-за чего было offs+size != filesize.
"Руссобит-М" - не смогли запаковать, так что для корректной распаковки нужен файл "fat.new" - там новая таблица размещения файлов (FAT - file allocation table) для архива, без этого файла будут распакованы только оригинальные файлы игры, зато они справились со шрифтами (там 1251, а не подстановка букв как у "7 Волка"), аналогично offs+size != filesize, но здесь потому что новые файлы в конец архива добавили.

QUOTE(PavelDAS @ May 11 2026, 14:13) *
BigTexInGame_Fonts.b16 немного странный, но, возможно, переводчики его так перерисовали
Картинки конвертируются "в лоб", так что там и цвета могут быть неправильные. Конвертер изображений чисто чтобы можно было посмотреть что там внутри примерно.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PavelDAS
May 12 2026, 06:43
Сообщение #10


Advanced Member
***

Группа: Authorized
Сообщений: 38
Регистрация: 21-September 25
Из: Minsk
Пользователь №: 18,037
Спасибо сказали: 12 раз(а)



QUOTE(-=CHE@TER=- @ May 11 2026, 16:34) *

Как же я не хотел это качать...
Обновил программу и добавил поддержку.


Теперь распаковывает всё. Спасибо.


--------------------
|__--__|
***|***
___|___


Спасибо сказали:
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 24th May 2026 - 22:49