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

Человек мухлюющий — читы в гейм-индустрии. Часть 2: Античиты, их проблемы и возможности

Уровень сложностиПростой
Время на прочтение19 мин
Количество просмотров5.5K
Всего голосов 7: ↑7 и ↓0+9
Комментарии25

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

Вообще непонятно. Вот есть спидхак. Сервер что, не анализирует как меняются координаты игрока? Скорость игрока (изменение его координат за единицу времени) вообще меняется в очень небольших пределах, если нет специальных способок. Ведь это простая проверка
if Deltacoord>DeltacoordLimit then Deltacoord=DeltacoordLimit
То же самое с уроном и всем остальным.
Или как?

Это надо головой думать. А прилепить чужую приблуду на свой EXE это думать не надо.

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

К тому же, в некоторых играх для оптимизации в комнате выбирается хост среди игроков, чей пк будет этим самым сервером, и если у него там читы, то особо-то и не помогут даже античиты на сервере

Это никак не связано с оптимизацией. Это называется listen server и этот подход используется для того, чтобы не было необходимости хостить выделенный сервер, он же dedicated server.
Довод про то, что в этом случае античиты не помогут - это спорное заявление. Сильно зависит от типа античита, на каком уровне он работает (на уровне приложения или в kernel mode) и прочих параметрах. В целом, отследить использование читов в listen сервере возможно. Эффективно ли - вопрос.
upd: не указал еще про самый очевидный способ защиты - в клиентах игр очень часто используют так называемые "защищенные" значения, которые шифруются в памяти по определенным правилам, чаще всего используются обычные xor и сдвиги. Это позволяет в разы усложнить поиск значений в памяти приложения и, как следствие, ограничить использование программ навроде Cheat Engine. Но, опять же, это зависит от того, насколько хотят взломать - такие приемы уже давно научились распознавать и обходить по-своему.

Это никак не связано с оптимизацией... чтобы не было необходимости хостить выделенный сервер

Оптимизация - это более широкое понятие, чем улучшение кода по времени/памяти, поэтому это вполне себе оптимизация (инфраструктуры)

Но, опять же, это зависит от того, насколько хотят взломать

Согласен, только при ПОЛНОЙ обработке всех действий (в том числе и итоговая картинка экрана) на сервере компании разработчика читы действительно будут убиты, но в современных реалях это будет стоит очень дорого, а по сути превращаться в клауд-гейминг

Оптимизация - это более широкое понятие, чем улучшение кода по времени/памяти, поэтому это вполне себе оптимизация (инфраструктуры)

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

это будет стоит очень дорого, а по сути превращаться в клауд-гейминг

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

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

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

 все симуляции, включая перемещение, делаются на сервере

Тогда и читов бы не было.

сколько там той проверки-то, по сравнению со всем остальным.

Например:

  • Читер использует спидхак не для передвижения на дистанции а для стрейфов, уклонения в бою. Или например чтобы компенсировать замедление при попадании в себя,

  • В игре с фантастическими элементами есть быстрое передвижение, какой-нибудь реактивный деш с кулдауном, но читер его использует на постоянке,

  • В игре есть вынужденное быстрое движение, скажем отброс при попадании ракеты в кваке,

  • В игре вовсе есть телепорты между контрольными точками или по другим условиям.

    И это только спидхак.

    А отличить осторожного волхакера от 10k+ часов в контре какой-нибудь - вообще ведь нетривиальная задача. Особенно если он и то, и другое.

Столько всего умные люди напридумывали. И не помогает ни*уя.

Технически, помогает, просто не со 100% эффективностью.
Часть читеров отсеивается банально на уровне сканирования памяти приложения, часть читеров будет отсеяна серверными проверками, часть поймает античит и статический анализ. Читеры и разработчики игр похожи на то, что происходит в информационной безопасности - обороняющаяся сторона всегда в догонябщем положении. Поэтому я сомневаюсь, что когда-либо в принципе настанет время совсем без читеров.

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

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

Потому что стон по поводу читеров в интернетах стоит уже сколько [десятков] лет? Столько же, сколько прошло с того момента, как многопользовательские игры более-менее распространились. Этот стон у нас песней зовётся. А все материалы по борьбе с читами (и этот, как видите, не исключение) всё так же описывают, что сканируется какая-то память и т. п., выявляются какие-то распространённые читы, и потом выявленные читеры жестоко банятся. Анализируется точность стрельбы, и слишком точно стреляющие принимаются за читеров и жестоко банятся. Будем оптимистами и примем процент забаненных читеров за 99 - оставшегося одного процента с лихвой хватит, чтобы испохабить любую игру. Даже если в этот раз вашей игровой сессии читера не досталось - осознания того, что в любой момент может прилететь читер и раздать хедшоты с разворота, хватит, чтобы испоганить игру. А действительно решить проблему, я так понимаю, невозможно - разве что стриминговыми игровыми сервисами, либо какими-то залами сертифицированных и опечатанных игровых автоматов.

А что вы предлагаете сейчас? У Riot Vanguard в Valorant, и FaceIt AntiCheat в CS 2 на Win11 античит запускаются в kernel mode с TPM и Secure Boot, и игру запускают в нём же вроде как, не позволяя читать и записывать память приложения. Окей, программные читы на этом же компьютере теперь работать не будут. Но PCIE порты самой материнской платы на Intel всё так же беспрепятственно дают устройствам доступ к прямому чтению и записи оперативной памяти даже с TPM и Secure Boot, что позволяет поставить DMA карту, выгрузить содержимое оперативной памяти на другой компьютер и там беспрепятственно его прочитать, и пользоваться на втором мониторе или же приклеить с помощью HDMI комбинатора вывести напрямую на монитор уже картинку с читами поверх. При этом в операционной системе такие действия никак видны не будут, потому что происходят не через OС а через ПО или Чипсет материнской платы напрямую. Что с этим делать? Принудить разработчиков античитов, попытаться договориться с Intel чтобы они переработали ПО и чипсеты, чтобы такие действия нельзя было производить или обязать выводить их в ОС? Допустим разработчики античитов соберутся в мегазорда коалицию и как то смогут договориться с intel, но тогда игры разрабы которых с этим борются станут требовать новую материнскую плату для запуска игры, где это внедрено (игроки в valorant на windows 11 уже ощутили прелести их античита, secure boot отключать нельзя, tpm 2.0 влючи, режим разработчика в винде отрубай, специфичные устройства из usb вытаскивай, иначе играть низя), получается цена отсутствия читеров для всех игроков внезапно станет равной стоимости покупки DMA карты для читера.
Стоит ли оно того? Сомнительно.

А что я должен предлагать и почему? Я юзер, в игре читеры, это серьёзная причина не играть в данную игру. Всё. Осмелюсь, разве что, робко спросить: а сделать как-то так, чтобы данные, которые должны быть недоступны игроку, вообще не поступали в оперативную память клиентского устройства и не могли быть "выгружены" никаким DMA - это совсем никак нельзя? Нет? Ну, тогда предлагаю разработчикам обратиться к нетленной максиме: "Не можешь срать - не мучай жопу."

Осмелюсь, разве что, робко спросить: а сделать как-то так, чтобы данные, которые должны быть недоступны игроку, вообще не поступали в оперативную память клиентского устройства и не могли быть "выгружены" никаким DMA - это совсем никак нельзя? Нет? Ну, тогда предлагаю разработчикам обратиться к нетленной максиме: "Не можешь срать - не мучай жопу."

То есть, вы считаете, что отсутствие игр вовсе, лучше чем если игры есть, но так же есть вероятность изредка встретить читера?


Лично мне как игроку вообще пофиг - я довольно давно забросил игры с элементами соревновательного мультиплеера, и даже не из-за читеров, просто нет желания проводить в них много времени, а без этого там нечего ловить, кроме боли и унижений - принцип "мастерство требует практики" никто не отменял. Просто несколько удивляет сам этот подход, состоящий из сплошных полумер, лепят заплату на заплату на заплату и потом гордо отписываются: "Мы тут в очередной раз сбороли читеров! Мы тут, эта, сканируем! А потом, эта, баним!" А воз и ныне там. Тот же хвалёный Vanguard в kernel mode с TPM и secure boot, насколько я понял, не решил "ни-у-я, вот просто ни-у-я" - те, что поборзее, продолжают читерить из-под Винды, те, что нет, стали читерить с Маков, ну до кучи навалили странных проблем честным игрокам и походя прибили игроков с Линукса (вряд ли многочисленных, но всё же). Ну, да что я понимаю - бизнес идёт, юзер доволен, деньги поступают, значит, наверное, они всё делают правильно.

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

От статьи несёт генерацией, либо я слишком продвинулся в теме создания читов, что большинство описанных вещей для меня являются ну ооочень базовыми. Технологии создания читов ушли уже далеко вперед (существенно дальше, чем абуз гипервизора), а античиты.. античиты уже давно позади и в играх типа Valorant работают только мануал баны (да, детекты и впрямь имеются, вот только они актуальны исключительно для тех, кто в создании читов совсем ноль, как и в программировании в принципе, это объективное мнение на данный момент)

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий