![](/uploads/posts/2022-08/info-icon.jpg)
Содержание статьи
- Защита дескриптора драйвером
- Виды защиты от внутренних читов
- Защита от внешних читов
- Античит от внешних читов
- Дополняем античит защитой от внутренних читов
- Добро пожаловать в RING 0!
- Пробиваем окно в kernel mode
- Архитектура как античит
- Примеры из реального мира
- Тактики читерства для игр с плохой архитектурой
- Заключение
Защита дескриптора драйвером
Некоторые античиты используют собственный драйвер. Он позволяет задействовать более широкий спектр возможностей для защиты приложения. Времена хуков SSDT прошли из-за высокой вероятности конфликта с другим программным обеспечением.
В Windows появилась специальная функция для перехвата некоторых событий системы — ObRegisterCallbacks. Драйвер античита урезает права дескриптора процесса, устанавливая callback на его получение. При попытке запросить полный доступ к защищенной игре приложение третьего кольца получит лишь доступ к общей информации о процессе.
Существуют и внутриигровые проверки: игра сама может проверять, модифицированы ли отдельные переменные или код в целом. Простой пример: если патронов в обойме будет больше, чем максимальное количество патронов в обойме, значит, что-то тут не так.
Виды защиты от внутренних читов
Для обхода внутренней защиты придется реверсить код.
Защита: хук функции LoadLibrary
.
Обход: ManualMapping
.
ManualMapping
— это ручная загрузка библиотеки в адресное пространство процесса. Она включает в себя парсинг заголовков, аллокацию памяти, запись, ручной импорт библиотек и вызов точки входа библиотеки. Выполняя ManualMapping
, мы полностью имитируем функцию LoadLibrary
, но не оставляем информации о загруженной библиотеке.
Защита: мониторинг активных потоков и трейсинг адреса библиотек.
Находя поток, который не относится к процессу игры, античит пытается проверить цифровую подпись библиотеки, код которой исполняет этот поток. Если это не удается сделать, пользователь помечается как читер.
Обход: хуки и code caving.
Перехват вызовов функций позволяет встроить наш код в существующие функции игры. Нам не нужно иметь собственный поток для вызова кода чита. Рано или поздно игра сама исполнит инородный код, и чит сделает свое дело.
Code cave — участок нулей в памяти приложения, который никогда не используется им во время исполнения. В этот участок можно встроить код чита. Выполнив проверку, относится ли код к адресному диапазону игры, античит пропустит его.
Защита от внешних читов
Для защиты от внешних читов используется драйвер.
Защита: мониторинг известных процессов или мониторинг всех процессов и поиск читерских программ по их сигнатурам.
Обход: обфускация.
Обфускация изменяет, запутывает, виртуализирует код, изменяет сигнатуры. Античит ищет только известные ему сигнатуры, и обфусцированные версии кода будут проигнорированы.
Античит от внешних читов
Напишем простой античит. Его будет легко обойти, потому что это только пример. В реальности античиты — это комплексные приложения, которые следят за многими аспектами системы.
Мы будем искать неподписанные процессы в системе — потому что читы редко подписывают, — получать их хеши и сравнивать с хешами известных читов. Для поиска процессов воспользуемся Process
, а для валидации готовым wrapper для функции WinVerifyTrust
из wintrust.dll
.
Список известных нам читов:
Скачать:
Скриншоты:
Важно:
Все статьи и материал на сайте размещаются из свободных источников. Приносим свои глубочайшие извинения, если Ваша статья или материал была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.