Как стать автором
Обновить

Почему античитерское ПО блокирует инструменты разгона?

Время на прочтение9 мин
Количество просмотров9.4K
Всего голосов 15: ↑13 и ↓2+11
Комментарии24

Комментарии 24

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

А как это все синхронизировалось между игроками?
Физика игрока считается на его компьютере и сервер верит всем координатам, которые приходят с клиента.

После прочтения возникают вопросы немного иные — почему такое ПО не помечается антивирусом как опасное не смотря на его полную (известную) дырявость и как такое вообще допустили к выпуску (особенно инструменты посолиднее, тот же MSI Aferburner).


P.S.: есть ли примеры античита для Linux (android не предлагать)? Насколько я понимаю, там это сделать не повредив легитимным пользователям и повредив читерам заметно сложнее с отсутствием возможности проверки всего и вся.

По той же логике надо помечать такое ПО, как R-Admin, Team Viewer, wget и т.п. как потенциально опасное, потому что злоумышленники включают подписанные бинарники в «полезную нагрузку» своих бекдоров и чёрную работу делают через них.

Какое-то время ПО для удалённого управления даже кем-то детектировалось, но насколько я помню, был судебный иск к производителю антивируса за то, что он другой компании мешает делать честный бизнес, и антививирусы стали осторожнее: вот этот бинарник легитимный, его не трогай, а этот бинарник хакерский, его удаляй. Хотя функциональность одинаковая: ПО для удалённого управления можно настроить так, чтобы оно не светилось в трее, сконфигурировать логин/пароль и поставить в автозапуск.

Особенность ситуации с читами в том, что «злоумышленник» — владелец собственного компьютера. А античит программа решает за него, какое ПО он может запускать, а какое не может. Для владельца компьютера опасность в этих драйверах минимальная: если вредоносное ПО включило в себя такой драйвер и пытается его использовать, значит, оно уже как-то запустилось в системе с правами администратора и «поздно пить боржоми» — не через этот драйвер, так как-то ещё оно может навредить.

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

Насколько я понимаю, опасность тут вот в чём: легитимное ПО из статьи ставит дырявый драйвер для своего пользования, а потом вредонос (или читер, кому что страшнее) через эту дыру имеет полный доступ к системе, хотя работает без прав администратора и само ничего не ставит. Это (идейно) как если бы Team Viewer позволял обойти авторизацию и кто угодно мог бы подключиться.

В статье упоминается, что драйвер проверяет права админа
между тем, чтобы выполнить запрос DeviceIoControl, требуются права администратора

В любом случае, даже если бы такой проверки не было, тот же CPU-Z загружает драйвер, пока запущен, а по выходу выгружает. Вредонос должен сидеть и ждать, пока запустится уязвимое приложение?

на самом деле в linux как раз могут. называется lockdown mode, позволяющий полностью отключить любой несакнционированный привилегированный доступ. Но это очень суровый режим, обычно предназначенный для embedded.

и как такое вообще допустили к выпуску (особенно инструменты посолиднее, тот же MSI Aferburner)
А что такого? Во времена Windows 2000 администратор мог свободно читать и писать физическую память, запускать любые свои неподписанные драйвера (через которые мог читать/писать порты и MSR), и мир не рухнул. root в линуксе и сейчас может делать всё что захочет.

Вот только Microsoft начинает закручивать гайки и делать, чтобы владелец ПК не был полноправным админом ОС. Начиная со всяких UAC, подписей на драйвера и ядро, и заканчивая настройкой прав, например на \Device\PhysicalMemory, чтобы у админа не было доступа к нему.

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

P.S.: есть ли примеры античита для Linux

EasyAntiCheat заявляет о поддержке Ubuntu Linux, но я лично не проверял. Могу предположить, что они и там устанавливают драйвер, который позволяет проверять всё и вся.

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

Против wallhack и autoaim протоколом не поборешься

Против wallhack как раз протоколом можно бороться. Не видишь противника — сервер не присылает тебе его координаты.

Можно делать какие-то грубые отсечения, если противник на 100% закрыт стеной — не отсылать.

А если он закрыт 50 полигонами, из которых каждый закрывает его на 2%. Это надо рендерить на сервере и определять, попадают ли пиксели противника на экран игрока. А если плохо видно через листву/туман/дым, а чит делает это явно видимым, как с этим бороться протоколом?

А если игрок должен видеть тень противника, или его отражение? Интересные будут глюки, если делать такие грубые отсечения и не отсылать врага, пока его нет в прямой видимости.

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

«Недокументированный драйвер Intel» — а название-то у него есть?
Здесь упоминается PMxDrv.
НЛО прилетело и опубликовало эту надпись здесь
Потому что античит не может полностью контроллировать машину. В частности, ядро линукс может беспрепятственно патчить игру, или считывать из её памяти важную информацию (например, о местоположении противника), и античит не заметит вторжения. Проще забанить.
НЛО прилетело и опубликовало эту надпись здесь
Дайвера, пфф, я вас умоляю. Я не могу играть в Rust ибо у меня мышка A4 и я читер.
Я не могу играть Rainbow Six Siege ибо у меня стоит proxifire и я читер.
С Rust аналогичная ситуация, но это скорее суровая необходимость. Есть сервера, где нет этой проверки на производителя железа, но «выхватить хэдшот через пол карты» там можно гораздо чаще.
В этой статье разработчик из группы Secret Club пытается убедить читателей в том, что стороннее ПО с уровнем привилегий ring0 может быть опасно для пользователей.
В другой статье разработчик из группы Secret Club пытается убедить читателей в том, что античитерское ПО с уровнем привилегий ring0 (Vanguard) полезно для пользователей, а на обвинения в потенциальной опасность отвечает, что это всего лишь необоснованные домыслы («This is very odd criticism and hard to refute as it is solely hypothetical.») и взломать вашу систему может вообще кто угодно («Right, it is also possible that someone hacks Microsoft, or literally any other company that runs code on your computer.»).

Что касается дисклеймера из статьи
Примечание: мы не имеем никакого отношения к издателям игр или поставщикам ПО против читеров и не сотрудничаем с ними ни на платной, ни на бесплатной основе.

, то это противоречит тому, что указано в профиле Carl Schou на linkedin об участии группы Secret Club в программе bug-bounty организованной для поиска ошибок в Vanguard.

В общем, статья выглядит несколько предвзятой.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий