May 26, 2018

Взлом игр

Конспект лекции Александра Шишенина «Как взламывать игры».

Базовые техники

Подмена ресурсов игры

  • сделать оружие мощнее

Взлом сохранений

  • начислить денег
  • поправить хитпоинты

Патч исполняемого файла

  • снять защиту от копирования
  • сохраниться в диабле в любом месте

Подмена содержимого памяти во время игры

  • переместиться за стену
  • прицеливаться автоматически

Так взламывали первые игры. Писали демон и капчер клавиатуры. Если нажать нужные кнопки, капчер слал сигнал демону. Тот уже включал команды. Так, если получилось вскрыть координаты противников, писали аимбот. Часто на этом останавливаются, но есть и другие, более эффективные методы атаки.

Например, графическая подмена. Вспомним Квейк. Там есть модели скелетов и качков. Хитбоксы при этом у них одинаковые, иначе нечестно. Хотя психологически игрок целится в кости скелета, а не в его хитбоксы, которые больше. Можно поменять модель на хитбоксы модели. Разработчики даже разрешили потом такой мод.

Кто-то менял модели оружия. Так делали себе золотые калаши, чтобы поднять ЧСВ. Или рисовали ещё один метр к стволам оружия — демаскировали противника. Это не взлом кода, но меняет игровой баланс — значит, атака.

Другие атаки через графическую подмену:

  • полупрозрачные текстуры стен;
  • трейс или вспышка от выстрела на две секунды, вместо 0,1 секунды;
  • отмена тумана войны (в ранних играх это чёрная текстура, поменяли на прозрачную и профит).

Взлом онлайн-игр

Первые игры были сингловые. Дальше случился локальный онлайн, в компьютерных клубах. Появились новые особенности:

  • сервер плохо защищён. Сервер поднимал админ клуба или один из игроков.
  • Нет выделенного противника в виде гейм-мастеров. Не было людей, которые наказывали читеров.
  • Жертвы сидят относительно недалеко. Они могут подойти к взломщику и покарать.
  • Снятие защиты от копирования становилось бизнесом.

Эра настоящих онлайн игр стартовала с Лайнэйдж и Варкрафта.

  • Появилась экономическая стоимость взлома. Это покупка валюты в Ф2П, или подписка в платных играх. Взломали - получили прибыль.
  • Появились гейм-мастера. Те, кто сидит в офисе на зарплате и ловит взломщиков. Вершина в иерархии поддержки игры.
  • Жертвы взлома далеко: и другие игроки, и компании.

То, что сделали на локальной машине, перестало иметь стоимость. Поэтому остались:

Патч исполняемого файла

  • снять защиту от копирования
  • сохраняться в диабле в любом месте

Подмена содержимого памяти во время игры

  • переместиться за стену
  • прицеливаться автоматически

Разработчики быстро поняли, что надо контролировать локальные ресурсы игры. Поэтому остальные техники отпали. Достаточно проверить даже не контрольные суммы, а размер файлов. Если размер не совпадает, запрашивается хэш сервера и считается хэш локального файла. Обмануть локальный хэш почти невозможно.

С подменой содержимого тяжело бороться. В больших играх не тянут серверы — они и так загружены. Тут всё просто. В маленьких станет скакать пинг. Давайте подробнее.

Физику в игре всегда считают локально, иначе человек с пингом улетит за стену. Вот у игрока пинг 200 мс. За 100 мс он двигается на метр. Игрок стоит в метре от стены и бежит на неё. Через 200 мс сервер увидит, что игрок вплотную к стене, хотя локально игрок уже за ней.

Переместить игрока обратно серверу не разрешают — иначе игрока стошнит. Вот он улетел за стену Сервер это поймал резко вернул его к стене. Игрок не успел поменять направление, опять улетел за стену и так далее.

Подытожим. То, где игрок находится на локальном ПК, то, где его видит сервер и то, где, его видят соперники — три разные точки.

Замену моделей разработчики превратили в рынок скинов. С пользовательскими заменами борются так же — проверяют размеры файлов и хэш-суммы.

Методы нового времени

Ворованные кредитки. В интернете встречаются целые базы таких. Взломщики пополняют с них баланс подставного аккаунта. Дальше обменивают реальные деньги на вещи и передают их на другие аккаунты. Если можно обмениваться предметами, отбить такую атаку на уровне игры почти невозможно.

Реферальные системы. Пригласи друга, получи бонус. Скрипт регистрирует аккаунты в промышленных количествах и накачивает основной аккаунт баблом. На заре реферальных систем правила так можно было даже по правилам.

Размытие фонда в игровой экономике. В играх есть механики спецпредложений. Например, вашему другу показывается скидка 30%, а вам — нет. Внутренняя эвристика посчитала, что другу имеет смысл показать, а вам — нет. Ведь для него она важна. А вы и так заплатите, или и так не заплатите. Хакеры пытаются реверс-инженерить эти механики.

Я сделал в игре что-то, после чего показывается скидка. И тогда у вас станут постоянные скидки. Такой взлом сложно задетектить и доказать. Наказать можно, если в ходе взлома игрок нарушает какое-то другое правило. Не всегда сажают за то, за что ловят.

Твиноводство. Создают фермы аккаунтов и перекидывают с них бонусы.

Годмайнинг. В играх по подписке, добыча золота прописана геймдизайнерами. В час игрок добывает 10 золотых. Мотивация разработчиков — чтобы ты купил подписку на следующий месяц. Если намайнил голды, купил в игре за месяц весь контент, и вряд ли купишь подписку на следующий месяц. Бизнес голдмайнеров — получать больше золота, чем разрешено или задумывалось и продавать его за реальные деньги.

Социальная инженерия. Вторым аккаунтом втираетесь к другому игроку в доверие, объединяетесь. Тот кидает логин-пароль, добавляет в чат гильдии. Даже если не угоните аккаунт, получите преимущество. Это не имеет никакого отношения к техническому взлому, но игры ломает. Особенно, если ещё и дадут доступ к ресурсам гильдии.

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

Взлом игровых механик. Тут преимуществ много.

  • Обмануть системы эвейда. Раньше игроки залезали на камни и расстреливали мобов. Мобы не дотягивались и без боя погибали. Тогда добавили эвейд. Если моб не может атаковать игрока, он телепортируется обратно и пополняет здоровье.
  • Подменить локальное время. В ферме дом строится 16 часов. Поменяли время на телефоне на 16 часов вперёд — дом построен. Поэтому время стали считать на сервере.
  • Вытащить механику за пределы приключения. Обычный рейд — 10 человек пилят напильниками босса. Он наскучил. Сделали рейд, где один игрок становится големом, а остальные ему помогают. Это уже приключение. Если игрок покинет приключение, но останется големом, случится беда для всех, кроме него.
  • Автоматизировать рутину. Чтобы поднять 10 уровней, надо убить 500 000 мобов. Поставили персонажа в нужную точку, и тот по скрипту режет врагов.
  • Всегда быть онлайн в играх типа Клэш оф кланс. Приклеил ластик к маятнику, подложил телефон. Каждые 5 секунд ластик касается экрана — никто не ограбит.
  • Найти ошибки в кросс-курсах валют. Золото меняешь на черепки. Черепки — на лягушек. Лягушки — на глину. Глину — на золото. И если за этот цикл получаешь из 10 золотых — 11...
  • Отключиться до синхронизации базы. Нашли ценную штуку, отдали другу. Вылетели без синхронизации памяти. Подождали, зашли обратно. Получилось две ценных штуки. Это назвают дюпом. Нужный вылет бывает от локальной ошибки клиента. Уникальный айди делают только очень редким шмоткам. Если сделать всем — удар по производительности.

Программируемые контроллеры. Тут тоже полно преимуществ.

  • Автоматизировать рутину. Оставили на ночь, скрипт бьёт ближайшего моба и поднимает шмот.
  • Убрать разброс стрельбы. Скрипт для КС:ГО сдвигает мышку вниз влево после выстрела из калаша. Зажимаешь и попадаешь всегда в центр прицела.
  • Всегда быть онлайн.
  • Спамить в чат.
  • Оптимизировать дамаг в секунду. С нужными таймерами скрипт нажимает кнопки. Как гамму на музыкальном инструменте. Задержка между двумя кастами сильного умения становится равной откату умения.

Отловить контроллеры сложно, потому что ОС агрессивно относится к попыткам игры узнать окружение. В играх, где это критично, требуют права администратора для установки. Некоторые контроллеры задетектить можно только с доступом к драйверам устройств.

Итоги для индустрии

  • Клиент в руках врага. Всё, что можно считать на сервере, считают на сервере.
  • Игры отказываются от открытой экономики. Обмен предметов между игроками - слишком рискованная механика. Если геймдизайнер просит свободный рынок, от него требуют десятистраничное обоснование.
  • Защита сервера дорогая - требует много времени серверных программистов. А они - недешёвые сотрудники.
  • По-старому ломают шутеры.
  • Акцент взломщиков перешёл на игровые механики.
  • Появилась социальная инженерия, от которой нет эффективной защиты.
  • В Китае и Корее уделяется меньше внимания клиентской защите, потому что там в интернет выходишь по паспорту. 50 аккаунтов с одного паспорта ловят легко. В странах с более открытым интернетом, намного сложнее.