ДИСКЛЕЙМЕР:
Автор не призывает к игре с сторонним ПО. Вся информация, приведенная в статье - приведена лишь в образовательных и ознакомительных целях. Информация была взята из открытых источников и ни к чему не призывает.
СОДЕРЖАНИЕ:
Как работают современные античиты
Основные принципы поиска вредоносных программ
Новые методы работы античитов
Чем закончится борьба?
Как работают современные античиты
Античит, как и любая другая программа на Вашем компьютере - лишь набор конкретных инструкций для процессора о том, что нужно делать. А также античиты - очень большие проекты. И ведь чем больше проект, тем больше шансов найти в нем какие - то уязвимости.
Рассмотрим структуру античитов:
Античиты бывают 3 видов:
user - mode
kernel - mode
server - mode
О первых двух пунктах я подробно рассказывал в этой(https://habr.com/ru/articles/1012168/)статье.
Если вкратце - user - mode - уровень доступа обычных программ, который позволяет античиту выполнять следующие действия:сканировать память других процессов, мониторить список запущенных приложений, проверять целостность файлов игры и перехватывать вызовы API. Но здесь кроется главная уязвимость: античит работает с теми же привилегиями, что и сама игра. Поэтому он находится в равных условиях с читом. Если вредоносное ПО умеет скрывать себя на более глубоком уровне (например, через подписанный драйвер), такой античит его попросту не заметит.
kernel - mode - уровень драйверов. Здесь античит может: получать привилегии кольца 0 (Ring 0), сканировать физическую память напрямую, видеть скрытые процессы и потоки, блокировать запуск подозрительных драйверов и защищать свои процессы от отладки. По сути, античит становится частью операционной системы.
Однако любой баг или недоработка в такой системе открывает злоумышленникам дверь в полный контроль над античитом и, соответственно, его обход.
Мы только что описали client античит. То есть программа(или модуль игры), который устанавливается непосредственно на ПК игрока. Но что там на счет нашумевших VAC Live или других нейросетей, которые анализирует поведение игрока?
На самом деле, это server mode(или server side(серверная сторона)) античиты не новы. Это программы, которые анализирует метрики пользователей на выявление определенных закономерностей и нарушений.
VAC Live и прочие - не первый пример античитов такого рода. Уже давно существуют анализаторы, которые анализируют статистику пользователя, процент убийств в голову и прочие показатели на выявление аномалий.
Итак, как же работает client - античит?
Структура его работы сводится к нескольким этапам:
- просканировать систему на наличие подозрительных и странных процессов(в Win32 API это делается через tlhelp32.h)
- безопасно запустить игру(сделать так, чтобы во время запуска никакой сторонний процесс не получал доступ к памяти нашего целевого процесса(игры))
- сканировать игру на инъекцию внешних DLL, которые не в списке
- проверять действия подтвержденных DLL(во избежание переписывания законных DLL игры)
DLL - библиотека динамической компоновки, в которую можно выносить функции приложения, чтобы впоследствии их подключать напрямую из DLL, тем самым сокращая размер исходного exe
Некоторые античиты, к примеру, VanGuard или FACEIT AC работают в режиме kernel mode и соответственно подгружаются во время запуска Windows.
Интересно, но не так давно на Faceit ввели правило Secure Boot - флаг, который запрещает загрузку неподписанных драйверов. Тем самым усложнив жизнь хакерам.
Да, на фейсите можно было поиграть с читами и без DMA, написав свой чит - драйвер.
Итак, какую защиту(от читеров) имеет стандартная(мультиплеер, соревновательная) игра с большим бюджетом:
клиентский античит, который сканирует весь ПК и не дает запуститься обычным user mode и kernel mode читам.
серверный анализатор
и, суммируя всю главу, можно сказать. Античит на клиенте - сканирует весь ПК на наличие запрещенного. От крупных и сильных античитов не скрыться обычными методами.
Основные принципы поиска вредоносных программ
Как же античит понимает, что процесс - подозрительный или вовсе вредоносный? Как разработчики устанавливают защиту от уже известных читов?
Ответ таков.
Софт для игры должен либо читать память процесса, либо ее изменять. Обычно все сразу. И вот именно это действие и ловит программа - античит. Ведь вызывая условный ReadProcessMemory мы читаем память по адресу не напрямую, а просим OC это сделать. Со стороны античиты можно мониторить буфер задач ОС и, в случае нахождения там процесса, удовлетворяющего критериям(читает/пишет в память нашей игры) - принимать соответствующие меры.
Дальше, возможно Вы слышали про сигнатуры. Это как отпечатки программы
При запуске программы на нее выделяется память. И вот на определенные переменные программы выделяется адрес памяти. Эта последовательность байтов - и есть сигнатура. Если ее вычислить - можно занести в античит, чтобы триггерить сразу, без проверок.
Возникает резонный вопрос. Как обнаружить DMA вмешательство?
Практически никак. Единственное, что можно(как и делает Faceit AC) - опрашивать железо на наличие подключенных устройств. И в случае нахождения DMA платы - принимать меры. Но где гарантия, что подозрительным не окажется, к примеру, мышь, WI FI модуль?
И злоумышленники этим пользуются .Переименовывают DMA на какой - нибудь Wi - FiI или блютуз модуль, чтобы античит их не подозревал.
Новые методы работы античитов
Мы разобрались, что на текущий момент разработчики античитов могут предотвратить запуск и использование стандартных user mode и kernel mode читов. Но что же делать с DMA?
Анализировать поведение.
Это и есть новые и передовые методы работы античитов. На сервере можно сравнивать большое количество информации: от соотношения KD в матчах до процента убийств в ноги или наведения прицела. Это и губит большинство людей, которые играют с дорогими платами.
Обычно разница между чистой игрой и игрой с ПО видна сразу: большое KDA, наводка сквозь стены, большой процент убийств в голову(опустим факт убийств в центр хитбокса, т.к в ПО такого ценового сегмента такое обычно учитывают).
Как это можно исправить со стороны разработчиков читов? Писать ботов, которые имитируют игру человека и делают все действия с идеальной точностью.
Хотя, тогда какой смысл в игре с читами, если пользователь не получает удовольствия от своего мнимого превосходства?
Вот и нашли потолок. Если человек купил DMA и софт к ней, играет аккуратно, соблюдая все методы предосторожности - он бан, скорее всего, не получит.
Античиты типа VAC Live b VANGUARD анализируют поведения игрока в матче, и в случае подтверждения вмешательства в игру с помощью ПО - банят нарушителя. Однако при таком анализе сложно учитывать логические действия игрока по карте.
То есть ESP таким анализатором не вычислить, а вот AIM вполне реально.
Чем закончится борьба?
Мы закончили с разбором основной темы. Тут я бы хотел пофантазировать на счет того, что возможно будет в будущем.
Со стороны читов:
Для заработка - появление специальных игровых, полностью автоматических ботов, которые играют за пользователя, соблюдая все меры предосторожности. К примеру, для буста или фарма опыта.
Для личной игры - софт с ИИ, который подсказывает, куда идти, сколько убийств делать и прочее.
Со стороны античитов
предсказание намерений(оценка вероятности того, собирается ли пользователь устанавливать софт по некоторым метрикам)
анализ логических действий игрока по макро и микро игре
верификация личности, как на FACEIT, чтобы цена аккаунта на “поиграть” стала слишком большой
Нельзя точно сказать, чем закончится борьба. Я думаю, она будет всегда. Ведь чем больше система, тем легче найти в ней уязвимость.
