Комментарии 12
Спасибо за статью!
Сам занимаюсь реверсом форматов. Только не для портирования, а для локализации игр. Интересное занятие. Порой разработчики выдумывают такие фишки, что не сразу и поймешь ) То размеры файлов разделят на 32, то смещение не от начала файла идет. Интересно и, главное, полезно разгадывать такие загадки, чтобы радовать пользователей возможностью поиграть на родном языке.
Сам занимаюсь реверсом форматов. Только не для портирования, а для локализации игр. Интересное занятие. Порой разработчики выдумывают такие фишки, что не сразу и поймешь ) То размеры файлов разделят на 32, то смещение не от начала файла идет. Интересно и, главное, полезно разгадывать такие загадки, чтобы радовать пользователей возможностью поиграть на родном языке.
Я тут недавно разбирался с внутренним строением формата SHG (графика с активными областями для применения в HLP-файлах), так там меня просто убила схема кодирования некоторых числовых полей в заголовках. Поле может занимать либо один, либо два байта (соответственно, общая длина заголовка не фиксирована). Чтобы записать число, его умножают на два. Если итоговый результат помещается в один байт, этот байт так и записывается, если не помещается — прибавляется единица, и результат записывается как два байта. Т. е. при чтении младший байт используется для определения длины поля. Аналогично есть поля, занимающие 2 или 4 байта, схема та же.
Для чего это было придумано, непонятно. Для экономии байтов — смысла нет, полей таких там раз-два и обчёлся, гораздо больше теряют на неудачно выбранном алгоритме сжатия изображения… К счастью, мне хотя бы самому не пришлось в этом разбираться (не уверен, что хватило бы терпения до конца раскопать эту схему), нашлась информация в инете от тех, кто в своё время уже по большей части отреверсил этот формат.
Для чего это было придумано, непонятно. Для экономии байтов — смысла нет, полей таких там раз-два и обчёлся, гораздо больше теряют на неудачно выбранном алгоритме сжатия изображения… К счастью, мне хотя бы самому не пришлось в этом разбираться (не уверен, что хватило бы терпения до конца раскопать эту схему), нашлась информация в инете от тех, кто в своё время уже по большей части отреверсил этот формат.
А я бы сразу взял IDA, и вперёд. Практика показывает, что можно очень сильно ошибиться таким вот «угадыванием». С графикой ещё куда ни шло, её всегда можно визуально проверить, а вот если дело доходит до сложных атрибутов объектов или скриптов игры (если есть), то только дизассемблер. Долго, нудно, но получается реплика 1 в 1.
Так а в итоге вы игру портировали куда-нибудь? У меня папа в нее резался очень долго, уже давно Windows XP вышла, и я долго мучался с запуском ее на эмуляторе — памяти много хочет, зараза :) Еще в DOS-е с ней была эта проблема — приходилось выгружать все что можно.
Очень интересная статья — спасибо большое. А я вот недавно пытался расковырять формат одной старой словарной программы (начала 2000-х) и сколько не смотрел я в этот hex-код, ни к каким открытиям не пришёл. =(
Видимо, мой файл (.*dic) был зашифрован или заархивирован. Вы не подскажете какой-нибудь ресурс, где можно поднабраться опыта ковыряния подобных вещей? Вот как ваша статья — очень полезна для того, чтобы набраться опыта.
Видимо, мой файл (.*dic) был зашифрован или заархивирован. Вы не подскажете какой-нибудь ресурс, где можно поднабраться опыта ковыряния подобных вещей? Вот как ваша статья — очень полезна для того, чтобы набраться опыта.
Надо энтропию вашего файла посмотреть. Если высокая — компрессия или шифрование вероятны. А еще лучше — построить график энтропии по файлу.
Вообще, интересные файлы ковырять приходится. Это точно не архив, потому что файл ужимается в четыре раза. И не зашифрован, видимо, потому что на глаз видно что последовательности 'f0 25' и 'f0 30' встречаются довольно часто.
Сказать по-честному, мне надо расшифровать старый файл словаря (им давно никто не пользуется), т.е. это значит, что там запрятан текст (легче найти закономерности?).
В первом файле (*,dic) даже есть все слова, встречающиеся в словаре и плюс какая-то информация, дающая ключ к расшифровке второго файла (*.idx; по видимому, тут находятся сами словарные статьи). Но вот как увидеть, что обозначает что — не могу. При том, что сам словарь в нативной программе можно просмотреть! То есть реально, есть всё для облегчения задачи. Но я справиться не могу =(
Сказать по-честному, мне надо расшифровать старый файл словаря (им давно никто не пользуется), т.е. это значит, что там запрятан текст (легче найти закономерности?).
В первом файле (*,dic) даже есть все слова, встречающиеся в словаре и плюс какая-то информация, дающая ключ к расшифровке второго файла (*.idx; по видимому, тут находятся сами словарные статьи). Но вот как увидеть, что обозначает что — не могу. При том, что сам словарь в нативной программе можно просмотреть! То есть реально, есть всё для облегчения задачи. Но я справиться не могу =(
Второй или третий уровень игрушки про подводную лодку, помню))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Исследование форматов игровых ресурсов на примере игры Dr.Riptide