Найти тему

Как взламывают игры!

Сегодня пойдёт речь о взломе игр. Нет, мы не будем добывать платный контент за бесплатно или что-то в этом роде, сегодня мы поговорим именно о взломе внутриигрового процесса, чтобы иметь то, что и так доступно, но закопано глубоко в коде. Именно этот код мы и будем ковырять!

На самом деле, нам не понадобятся знания языков программирования или ревёрс-инженеринга, мы будем пользоваться лишь основами этих сфер деятельности и графическими программами, что значительно упрощает работу.

ДИСКЛЕЙМЕР:Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Спасибо!

ВНИМАНИЕ:Все ссылки, ведущие на файлы не были проверены на безопасность. Запускайте файлы на свой страх и риск или пользуйтесь виртуальной машиной!

Давайте приступим!

Первым делом поговорим про дебаггеры.

Debugger - это вспомогательная программа для поиска ошибок в коде, что часто может быть полезным разработчику игр. Однако такими инструментами пользуются и взломщики, чтобы найти недочёт в коде.

Создаём цель:

Я не хочу демонстрировать практику на платных играх, поэтому воспользуюсь бесплатным ПО, но создам на неё ограничение, которое будет требовать ввод уникального ключа для запуска игры.

А для такой задачи подойдёт программа Game Protector.

Запускаем установщик и оставляем все настройки по дефолту:

Открываем программу:

-2

В строке Game Program нам нужно указать расположение файла игры.

Если ваша игра из стима, то скорее всего папку с игрой вы найдёте по такому пути:

C:\Program Files (x86)\Steam\steamapps\common

В крайнем случае переходим в библиотеку игр, нажимаем ПКМ -> Управление и "просмотреть локальные файлы":

-3

Вставляем путь к файлу в Game Protector, указываем пароль и ставим галочку на "Create Backup", чтобы сделать бэкап на всякий случай:

-4

Нажимаем protect и получаем такое уведомление:

-5

В нём указано куда сохранён бэкап файла.

В случае если вам понадобится восстановить бэкап - просто переименуйте сохранённую копию, так чтобы вместо .bak было исходное расширение, например .exe.

Теперь при запуске игры нас встречает такое окно:

-6

А при вводе неправильного пароля, такое:

-7

Обходим защиту:

Такая защита подобна требованию ключа активации, когда закончилась пробная лицензия программы или вы скачали пиратку.

Нам понадобится дебаггер, который называется OllyDbg.

Скачиваем архив, распаковываем и запускаем программу от имени администратора:

-8

Нажимаем File -> Open:

-9

И выбираем игру, от которой хотим узнать пароль:

-10

Далее кликаем ПКМ в открывшемся окне и переходим в Search for -> All referenced strings:

-11

В новом окне нам нужно найти ошибку, которая появляется при вводе неправильного пароля.

Давайте посмотрим ещё раз, как она выглядит:

-12

Нажимаем CTRL + F (или переходим к поиску по клику ПКМ) и вводим слово invalid, чтобы найти ветку ошибки:

-13

Щелкаем 2 раза ЛКМ по найденной строчке:

-14

И в первом окне щелкаем там, где начинается раскрытие ветки:

-15

Нажимаем F2 (или через ПКМ переходим к BrackPoint), а далее вновь запускаем программу (F9 или во вкладке Debug -> run) и вводим рандомный пароль:

-16

В первом окне в правом нижнем углу видим введённый нами пароль, а чуть ниже правильный:

-17

Пробуем данный пассворд для ввода и радуемся, т. к. он подходит и игра запускается:

-18

Аналог для Linux:

Аналогичным дебаггером для Linux выступает edb-debugger.

В Kali Linux он устанавливается следующей командой:

apt-get install edb-debugger

А сами игры можно запускать через Wine.

Индивидуальные программы для взлома игр:

На самом деле для определённых игр существуют и определённые программы, которые позволяют изменять исходники игры.

Так например, для всеми известной террарии существует TEdit, которая позволяет изменять или просматривать игровую карту по нуждам пользователя.

Для примера я решил создать новую карту и показать, что она ещё не изучена игровым персонажем:

-19

И на этом этапе возникает много вопросов:

С какой стороны данж?

С какой стороны порча?

Где находится сундук с хорошим лутом?

Где храм с големом, который следует искать в хардмоде?

И на все эти вопросы можно легко ответить не применяя никаких читов.

Мы просто прочитаем файл через TEdit и узнаем где и что находится.

Я не считаю это читом, т.к. мы просто "читаем" файл, но не будем вносить в него никаких изменений (хотя и это мы можем сделать).

Открываем программу:

-20
-21

В этой программе нам нужно указать файл карты.

Файл находится по этому пути:

C:\Users\user\Documents\My Games\Terraria\Worlds

с расширением .wld.

На всякий случай делаем бэкап файла и сохраняем его в надёжное место.

Теперь указываем его в TEdit:

-22

И у нас открывается полная демонстрация карты:

-23

Например на ней видно, что данж находится с левой стороны, а храм почти там, где начинаются джунгли:

-24
-25

Также у нас есть возможность изменять параметры карты, например добавлять события или NPC:

-26

Но это уже читы.

Ещё можно использовать плагины:

-27

Например для поиска сундуков с хорошим лутом. Так я смог найти сундук, который хранит в себе теневой ключ.

Выбираем Find Chests With и в открывшемся окне вводим название предмета:

-28

У нас открывается новое окно с координатами сундуков с данным предметом:

-29

Кликаем по одной из строчек 2 раза ЛКМ и он отображается на карте:

-30

Кстати, данный метод работы с картами работает и на мобильной версии Terraria.

Немного о модах:

Моды создаются похожим образом.

В основном моды на текстуры просто заменяют исходные файлы на кастомные.

Например в той же террарии файлы, которые отвечают за текстуры находятся по данному пути:

C:\Program Files (x86)\Steam\steamapps\common\Terraria\Content

с расширением .xnb.

Эти файлы можно заменить или изменить.

Например редактирование происходит через Microsoft XNA Game studio (Работает на Win XP-7).!