Как стать автором
Обновить

Комментарии 12

Спасибо за статью!
Сам занимаюсь реверсом форматов. Только не для портирования, а для локализации игр. Интересное занятие. Порой разработчики выдумывают такие фишки, что не сразу и поймешь ) То размеры файлов разделят на 32, то смещение не от начала файла идет. Интересно и, главное, полезно разгадывать такие загадки, чтобы радовать пользователей возможностью поиграть на родном языке.
Я тут недавно разбирался с внутренним строением формата SHG (графика с активными областями для применения в HLP-файлах), так там меня просто убила схема кодирования некоторых числовых полей в заголовках. Поле может занимать либо один, либо два байта (соответственно, общая длина заголовка не фиксирована). Чтобы записать число, его умножают на два. Если итоговый результат помещается в один байт, этот байт так и записывается, если не помещается — прибавляется единица, и результат записывается как два байта. Т. е. при чтении младший байт используется для определения длины поля. Аналогично есть поля, занимающие 2 или 4 байта, схема та же.

Для чего это было придумано, непонятно. Для экономии байтов — смысла нет, полей таких там раз-два и обчёлся, гораздо больше теряют на неудачно выбранном алгоритме сжатия изображения… К счастью, мне хотя бы самому не пришлось в этом разбираться (не уверен, что хватило бы терпения до конца раскопать эту схему), нашлась информация в инете от тех, кто в своё время уже по большей части отреверсил этот формат.
А я бы сразу взял IDA, и вперёд. Практика показывает, что можно очень сильно ошибиться таким вот «угадыванием». С графикой ещё куда ни шло, её всегда можно визуально проверить, а вот если дело доходит до сложных атрибутов объектов или скриптов игры (если есть), то только дизассемблер. Долго, нудно, но получается реплика 1 в 1.
А подробнее можете рассказать? Не плохая бы статья вышла! :)
Так а в итоге вы игру портировали куда-нибудь? У меня папа в нее резался очень долго, уже давно Windows XP вышла, и я долго мучался с запуском ее на эмуляторе — памяти много хочет, зараза :) Еще в DOS-е с ней была эта проблема — приходилось выгружать все что можно.
Очень интересная статья — спасибо большое. А я вот недавно пытался расковырять формат одной старой словарной программы (начала 2000-х) и сколько не смотрел я в этот hex-код, ни к каким открытиям не пришёл. =(

Видимо, мой файл (.*dic) был зашифрован или заархивирован. Вы не подскажете какой-нибудь ресурс, где можно поднабраться опыта ковыряния подобных вещей? Вот как ваша статья — очень полезна для того, чтобы набраться опыта.
Надо энтропию вашего файла посмотреть. Если высокая — компрессия или шифрование вероятны. А еще лучше — построить график энтропии по файлу.
Вообще, интересные файлы ковырять приходится. Это точно не архив, потому что файл ужимается в четыре раза. И не зашифрован, видимо, потому что на глаз видно что последовательности 'f0 25' и 'f0 30' встречаются довольно часто.

Сказать по-честному, мне надо расшифровать старый файл словаря (им давно никто не пользуется), т.е. это значит, что там запрятан текст (легче найти закономерности?).

В первом файле (*,dic) даже есть все слова, встречающиеся в словаре и плюс какая-то информация, дающая ключ к расшифровке второго файла (*.idx; по видимому, тут находятся сами словарные статьи). Но вот как увидеть, что обозначает что — не могу. При том, что сам словарь в нативной программе можно просмотреть! То есть реально, есть всё для облегчения задачи. Но я справиться не могу =(
Гадать по описанию можно долго. Лучше бы выложили куда-нибудь минимальный набор словарь+программа и в личку ссылку.
Поддерживаю. И судя по именам, в dic лежит текст, а в idx — индекс для поиска по нему.
Второй или третий уровень игрушки про подводную лодку, помню))
все верно, второй уровень первого сценария
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории