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

Защита дескриптора драйвером

Некоторые античиты используют собственный драйвер. Он позволяет задействовать более широкий спектр возможностей для защиты приложения. Времена хуков SSDT прошли из-за высокой вероятности конфликта с другим программным обеспечением.

В Windows появилась специальная функция для перехвата некоторых событий системы — ObRegisterCallbacks. Драйвер античита урезает права дескриптора процесса, устанавливая callback на его получение. При попытке запросить полный доступ к защищенной игре приложение третьего кольца получит лишь доступ к общей информации о процессе.

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

INFO

В прошлой статье я рассказывал о разных видах читов.

 

Виды защиты от внутренних читов

Для обхода внутренней защиты придется реверсить код.

Защита: хук функции LoadLibrary.

Обход: ManualMapping.

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

Защита: мониторинг активных потоков и трейсинг адреса библиотек.

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

Обход: хуки и code caving.

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

Code cave — участок нулей в памяти приложения, который никогда не используется им во время исполнения. В этот участок можно встроить код чита. Выполнив проверку, относится ли код к адресному диапазону игры, античит пропустит его.

 

Защита от внешних читов

Для защиты от внешних читов используется драйвер.

Защита: мониторинг известных процессов или мониторинг всех процессов и поиск читерских программ по их сигнатурам.

Обход: обфускация.

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

INFO

Для защиты трафика сетевой игры используют шифрование SSL или собственные протоколы, которые может быть сложно реверсить.

 

Античит от внешних читов

Напишем простой античит. Его будет легко обойти, потому что это только пример. В реальности античиты — это комплексные приложения, которые следят за многими аспектами системы.

Мы будем искать неподписанные процессы в системе — потому что читы редко подписывают, — получать их хеши и сравнивать с хешами известных читов. Для поиска процессов воспользуемся Process, а для валидации готовым wrapper для функции WinVerifyTrust из wintrust.dll.

Список известных нам читов:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии