20111109

Дополнительная информация.

В [предыдущем] видеоуроке (если вы, конечно, уже успели его посмотреть и ужаснуться), взлом был не таким, как в остальных уроках. В чём он отличался? А в том, что Cheat Engine мы не использовали и никакие адреса, по сути, не искали. Использовали мы замечательный отладчик под названием [OllyDbg], абсолютно бесплатный для некоммерческого использования (его даже можно скачать по [этой ссылке]) и который мы будем использовать дальше. Не всё время (с Cheat Engine бы до конца разобраться, да?), но периодически будем.

В предыдущем уроке мы ломали игру под названием Call of Duty, построенную на движке Quake 3 Arena. Это - замечательный факт, потому что к движку этого самого третьего квейка прилагается исходный код в виде SDK - Software Developer's Kit, он же - Инструментарий Разработчика.

Мы тут же лезем на [FTP] ID Software и качаем SDK последней версии. Написан он на С++, но мы, не зная этого языка, используем логику и английский язык - нам нужна функция стрельбы, то есть всё, где есть слова "weapon" (оружие) и "fire" (стрельба). Находим нужный файл, открываем простым текстовым редактором и ищем в нём одноимённую функцию.

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

Понимая, что в нашей игре она всё-таки есть, мы надеемся что мудрые разработчики нужную нам функцию просто немного дописали и идём в Olly.

В отладчике мы открываем процесс нашей игры и ищем в нём все текстовые строчки, среди которых нам попадается та самая функция, к вызову которой мы и переходим. А сразу же после неё мы обнаруживаем шибко подозрительный условный переход. Меняем его на обратный - и voila - отдачи в игре нет.

 

Можно было бы и пойти другим путём, используя только Cheat Engine:

Ищем неизвестное значение типа float, постреляли (ствол оружия направлен вверх) - увеличилось, ствол опустился - уменьшилось и так далее. После этого смотрим, что пишет в этот адрес, и ищем нужный нам код. Обычно это или условный переход, или же call (вызов функции). Плюс этого способа в том, что сработает в любой игре, минус же - что искать адрес придётся долго, а ещё дольше - разбираться в коде.

Поначалу OllyDbg может выглядеть сильно сложным и непонятным, но вспомните себя при просмотре первых видеоуроков и поймёте разницу - достаточно немного практики, чтобы освоиться. :)

3 комментария:

  1. Отличный тутор, а можеш показать что нибудь на игре Morrowind?

    ОтветитьУдалить
  2. monkide, спасибо! По морровинду может и будет что-нибудь, напиши в заявки (пост чуть пораньше), какие опции интересуют.

    ОтветитьУдалить
  3. Grom-Skynet11/11/11 00:57

    Отличный видеоурок... спс

    ОтветитьУдалить

Не люблю мат и низкий уровень грамотности. Чем конкретнее поставите свой вопрос и чем лучше он будет выглядеть - тем большая вероятность на мой ответ. :)