Вход пользователей
Пользователь:

Пароль:

Чужой компьютер

Забыли пароль?

Регистрация
Меню
Разделы

Реклама











Сейчас с нами
351 пользователей онлайн

За сегодня: 0

Уникальных пользователей за последние сутки: 11179

мухич, Oleg, далее...
Счетчики

Top.Mail.Ru
Реклама




Игры : Might & Magic изнутри или Как сделать Rejuvenation Potion
Автор: Serjio в 28/04/2003 21:20:04 (1905 прочтений)

Автор: Lewis
Любопытство, как известно, не порок.

Именно так я успокаиваю свою совесть каждый раз, когда начинаю копаться в очередной игре. Да и вы, наверняка не раз задумывались, глядя на игру: "Как же оно там внутри устроено?" Конечно, в лицензионном соглашении написано, что "не допускается", "преследуется", и т.д. Но, между нами, кто же его читает, это соглашение?
Итак, на этот раз жертвой моего любопытства стала игра M&M VIII (надо отметить, что большая часть того, что тут будет сказано, так же вполне применима к MM7 и даже MM6 - движок-то не сильно изменился).
Гранд-мастер в алхимии, а рецептов Black Potion'ов не знаю - ну что за безобразие! Денег на покупку рецептов было жалко, да и бегать за ними по всему миру было как-то не досуг. Тем более что все равно все бы выяснилось, но времени-то жаль. Ну что же - хакеры мы или нет? Решил посмотреть в файлах игры, наверняка это там как-то хранится...
Чем смотреть спросите вы?
Далее...

Для этой цели подойдет любой hex-editor (я предпочитаю использовать qview и hiew - любой из них можно легко найти в Сети).
Итак, чем смотреть мы запаслись - теперь дело за малым - найти нужный файл.
В директории, в которую установлена ваша игра, есть еще несколько поддиректорий - и одна из них имеет заманчивое название Data - скорее всего, большая часть данных игры лежит именно там.
Зайдем в эту директорию. Да, не слишком радостно - какие-то странные расширения - .lod и .hwl. Что же это за файлы? Попробуем посмотреть на них в hiew - да, явно не текст. Хотя вот - время от времени видны имена файлов, еще какие-то строки. Ну что же, поищем там наше слово "potion". Нашлось в двух файлах - EnglishT и EnglishD (как станет ясно из дальнейшего, в этих файлах лежит текст и озвучка диалогов соответственно). Уже хоть что-то - смотрим, где же именно в EnglishT нам попалась слово "potion". Открываем файл в hiew и нажимаем сначала F4, переходя в hex-режим, а затем начинаем поиск по F7 . Первое совпадение - по смещению 3560 - POTION.TXT - ага, тут есть какой-текст про potion'ы, но где же он? Продолжаем поиск, нажимая Shift+F7 - еще раз попадается POTION.TXT и все - грустно как-то. Да и в глубине файла явно не текст.
Как же они это хранят? Может чем-то сжимают? Попробуем выяснить - самый простой (хотя и не очень надежный тест - это попробовать сжать этот файл самим каким-нибудь стандартным архиватором - pkzip-ом, скажем. Пробуем - не жмется! Вернее жмется, но только на 10% - а ведь там должен быть текст...
Ладно, попробуем зайти с другого конца - как же устроен это EnglishT.lod? Посмотрим повнимательнее - есть! Начиная со смещения 120, идут блоки примерно одинаковой структуры, длиной 4c байт - особенно четко это видно, если включить просмотр в виде текста - это, кстати, очень помогает, когда надо увидеть в файле какую-то структуру.
Так, а что же там в этих блоках? Сначала идет имя - это-то ясно, но что там есть еще? Чтобы проще было с этим разбираться, я предпочитаю делать следующее - берем в руки qview, открываем наш файл и, выделяя несколько блоков (один раз нажать ins начнется выделение, второй раз - прекратится), сохраняем их в отдельные файлы. Теперь пару окон с hiew и начинаем сличать - и что же - вот имена, а дальше - а дальше какой-то мусор, причем одинаковый во всех блоках, и только в конце два четырехбайтовых слова (будем, кстати, называть такие слова long'ами) различны, а за ними опять везде одинаковые четыре нолика.
Этой информации достаточно, чтобы сделать вывод - перед нами что-то похожее на каталог тех файлов, что собраны в этот EnglishT.lod, причем два long'а - это скорее всего информация о длине и размещении отдельных файлов внутри большого. Проверим нашу догадку - возьмем первый блок, который соответствует файлу 2DEvents.txt - так, 4F54A (кстати, вы не забыли, что байты длинных чисел надо брать, начиная с крайне правого) Нажимаем F5, вводим число, переходим в нужное место файла - нет, что-то не так - какие-то совершенно нечитаемые данные... хотя, что это? Там, немного внизу - по смешению 4F66A? Так, это то же самое имя 2Devents.txt. Похоже, мы на верном пути - причем расстояние между ним и числом из заголовка - 120 - то же, что и размер блока в начале файла, который мы пропустили - можно сделать вывод о том, что первый long - это действительно смещение, но не от начала всего файла, а от начала каталога. Ну, хорошо, а второй long?


Ещё подробнее...

0
Seti
 SETI.ee ()
Вконтакте
 ВКонтакте (0)
Facebook
 Facebook (0)
Мировые новости