Сегодня пойдёт речь о взломе игр. Нет, мы не будем добывать платный контент за бесплатно или что-то в этом роде, сегодня мы поговорим именно о взломе внутриигрового процесса, чтобы иметь то, что и так доступно, но закопано глубоко в коде. Именно этот код мы и будем ковырять!
На самом деле, нам не понадобятся знания языков программирования или ревёрс-инженеринга, мы будем пользоваться лишь основами этих сфер деятельности и графическими программами, что значительно упрощает работу.
ДИСКЛЕЙМЕР:Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Спасибо!
ВНИМАНИЕ:Все ссылки, ведущие на файлы не были проверены на безопасность. Запускайте файлы на свой страх и риск или пользуйтесь виртуальной машиной!
Давайте приступим!
Первым делом поговорим про дебаггеры.
Debugger - это вспомогательная программа для поиска ошибок в коде, что часто может быть полезным разработчику игр. Однако такими инструментами пользуются и взломщики, чтобы найти недочёт в коде.
Создаём цель:
Я не хочу демонстрировать практику на платных играх, поэтому воспользуюсь бесплатным ПО, но создам на неё ограничение, которое будет требовать ввод уникального ключа для запуска игры.
А для такой задачи подойдёт программа Game Protector.
Запускаем установщик и оставляем все настройки по дефолту:
Открываем программу:
В строке Game Program нам нужно указать расположение файла игры.
Если ваша игра из стима, то скорее всего папку с игрой вы найдёте по такому пути:
C:\Program Files (x86)\Steam\steamapps\common
В крайнем случае переходим в библиотеку игр, нажимаем ПКМ -> Управление и "просмотреть локальные файлы":
Вставляем путь к файлу в Game Protector, указываем пароль и ставим галочку на "Create Backup", чтобы сделать бэкап на всякий случай:
Нажимаем protect и получаем такое уведомление:
В нём указано куда сохранён бэкап файла.
В случае если вам понадобится восстановить бэкап - просто переименуйте сохранённую копию, так чтобы вместо .bak было исходное расширение, например .exe.
Теперь при запуске игры нас встречает такое окно:
А при вводе неправильного пароля, такое:
Обходим защиту:
Такая защита подобна требованию ключа активации, когда закончилась пробная лицензия программы или вы скачали пиратку.
Нам понадобится дебаггер, который называется OllyDbg.
Скачиваем архив, распаковываем и запускаем программу от имени администратора:
Нажимаем File -> Open:
И выбираем игру, от которой хотим узнать пароль:
Далее кликаем ПКМ в открывшемся окне и переходим в Search for -> All referenced strings:
В новом окне нам нужно найти ошибку, которая появляется при вводе неправильного пароля.
Давайте посмотрим ещё раз, как она выглядит:
Нажимаем CTRL + F (или переходим к поиску по клику ПКМ) и вводим слово invalid, чтобы найти ветку ошибки:
Щелкаем 2 раза ЛКМ по найденной строчке:
И в первом окне щелкаем там, где начинается раскрытие ветки:
Нажимаем F2 (или через ПКМ переходим к BrackPoint), а далее вновь запускаем программу (F9 или во вкладке Debug -> run) и вводим рандомный пароль:
В первом окне в правом нижнем углу видим введённый нами пароль, а чуть ниже правильный:
Пробуем данный пассворд для ввода и радуемся, т. к. он подходит и игра запускается:
Аналог для Linux:
Аналогичным дебаггером для Linux выступает edb-debugger.
В Kali Linux он устанавливается следующей командой:
apt-get install edb-debugger
А сами игры можно запускать через Wine.
Индивидуальные программы для взлома игр:
На самом деле для определённых игр существуют и определённые программы, которые позволяют изменять исходники игры.
Так например, для всеми известной террарии существует TEdit, которая позволяет изменять или просматривать игровую карту по нуждам пользователя.
Для примера я решил создать новую карту и показать, что она ещё не изучена игровым персонажем:
И на этом этапе возникает много вопросов:
С какой стороны данж?
С какой стороны порча?
Где находится сундук с хорошим лутом?
Где храм с големом, который следует искать в хардмоде?
И на все эти вопросы можно легко ответить не применяя никаких читов.
Мы просто прочитаем файл через TEdit и узнаем где и что находится.
Я не считаю это читом, т.к. мы просто "читаем" файл, но не будем вносить в него никаких изменений (хотя и это мы можем сделать).
Открываем программу:
В этой программе нам нужно указать файл карты.
Файл находится по этому пути:
C:\Users\user\Documents\My Games\Terraria\Worlds
с расширением .wld.
На всякий случай делаем бэкап файла и сохраняем его в надёжное место.
Теперь указываем его в TEdit:
И у нас открывается полная демонстрация карты:
Например на ней видно, что данж находится с левой стороны, а храм почти там, где начинаются джунгли:
Также у нас есть возможность изменять параметры карты, например добавлять события или NPC:
Но это уже читы.
Ещё можно использовать плагины:
Например для поиска сундуков с хорошим лутом. Так я смог найти сундук, который хранит в себе теневой ключ.
Выбираем Find Chests With и в открывшемся окне вводим название предмета:
У нас открывается новое окно с координатами сундуков с данным предметом:
Кликаем по одной из строчек 2 раза ЛКМ и он отображается на карте:
Кстати, данный метод работы с картами работает и на мобильной версии Terraria.
Немного о модах:
Моды создаются похожим образом.
В основном моды на текстуры просто заменяют исходные файлы на кастомные.
Например в той же террарии файлы, которые отвечают за текстуры находятся по данному пути:
C:\Program Files (x86)\Steam\steamapps\common\Terraria\Content
с расширением .xnb.
Эти файлы можно заменить или изменить.
Например редактирование происходит через Microsoft XNA Game studio (Работает на Win XP-7).!