Punkbuster существует только для предотвращения мошенничества, но, тем не менее, мошенничество распространено в играх с поддержкой punkbuster. Modern Warefare 2 серьезно заблокирован конечным пользователем, работающим на своем собственном сервере или создающим какие-либо моды, и мошенничество происходит постоянно.
Что можно сделать для многопользовательской игры, в которой каждый клиент работает на ПК, чтобы уменьшить или устранить мошенничество?
multiplayer
anti-cheat
security
kevin42
источник
источник
Ответы:
Это зависит от того, как они обманывают, сосредотачиваясь на одном из основных способов создания читов, других процессах, запирающихся в вашем приложении и изменяющих его - вы можете перечислять все другие процессы, подключать их методы манипулирования памятью и их эмуляцию клавиатуры / мыши. методы.
Wallhacks обычно пишутся путем внедрения кода между вашим процессом и библиотеками DirectX / GL, чтобы установить прозрачность материалов, чтобы их было видно. Вы можете добавить некоторый код в вашу систему сцен / отбраковки, чтобы специально не рисовать других игроков / полезных сущностей, если они находятся за стенами (чтобы предотвратить обман таким образом).
Если вы работаете в многопользовательском режиме и хотите предотвратить изменение пакетов между клиентом и сервером, тогда создание контрольной суммы данных, отправляемых вами по некоторому собственному алгоритму, и проверка этого в том виде, в каком он поступает с другой стороны, может быть эффективной. (Возможно, вы все равно будете делать это для различных целей обеспечения качества).
То же самое относится и к большинству ваших ресурсов в памяти: создание контрольной суммы в начале кадра и проверка ее на разных этапах может привести к довольно удобному обнаружению манипуляций с памятью.
Это довольно сложная тема, но, надеюсь, это укажет вам неопределенное направление.
источник
При самом крайнем решении вы в основном никогда не доверяете клиенту. Для таких игр, как MMO, пользователи не запускают свои серверы, и любая логика игрового процесса обрабатывается на стороне сервера. Никогда не давайте клиенту права сказать «у меня Х здоровья» или «У меня Х патронов» и т. Д.
источник
Если у вас есть система, в которой логика стоит дорого и должна выполняться в основном на клиенте, чтобы сохранить серверные циклы, вы можете внедрить вероятностную систему обнаружения мошенничества. Каждые несколько минут выбирается несколько разных игроков для тщательной проверки и проверки согласованности на сервере. Так как мошенники редко ограничивают свой обман короткими и редкими периодами времени, они будут в конечном итоге пойманы.
Еще одним преимуществом этого является то, что у них не будет быстрого цикла обработки для разработки - если на сервер требуется в среднем 10 часов игрового процесса, чтобы обратить внимание на вас, то это 10-часовой цикл обработки каждый раз, когда вы хотите увидеть если что-то сработало. И если он сделал работу, это даже больше , потому что они не будут знать , если сервер предоставил им большой палец вверх или просто не удосужился им.
источник
Существует также много типов хакерских атак для шутеров от первого лица, которые также работают, подключаясь к вызовам графической библиотеки. У OGC Hook для Counter-Strike / HL1 было множество возможностей, кроме того, чтобы сделать стены прозрачными.
Если информация о местонахождении врагов в какой-то момент передается в библиотеку более низкого уровня, имеющую широко доступный код, эти вызовы можно подключить, а данные о местоположении, масштабе, повороте и т. Д. Можно использовать для точного расчета наилучшего вектора для стрельбы. на этого врага. Античит-системы, такие как PunkBuster, часто включают в себя эвристическое обнаружение (как часто этот игрок получает идеальный выстрел, как часто они поворачиваются на 180 градусов, чтобы нанести один выстрел, и т. Д.) В дополнение к мониторингу памяти и процесса.
В конечном итоге задача предотвращения мошенничества в многопользовательских играх - игра в кошки-мышки. По мере разработки новых читов создаются новые методы против читов, а затем создаются новые читы, чтобы избежать новых технологий против читов.
Как сказал Тетрад в своем ответе, единственные жесткие и быстрые правила «безопасности игры» - предоставлять клиенту как можно меньше информации и как можно меньше доверять клиенту. Различные типы игр будут иметь разные требования, которые могут повлиять на то, насколько хорошо вы будете придерживаться этих правил.
В FPS-игре, поскольку скорость игрового процесса очень высока, зачастую невозможно предоставить клиенту только те данные, которые он должен знать об этом конкретном моменте. Если вы не говорите клиенту, что за углом находится враг, а игрок заходит за этот угол, вам внезапно приходится отправлять ему эту информацию в считанные миллисекунды или вы рискуете убить игрока от врага, которого он не сделал. когда-либо увидеть.
Единственное исправление для этих проблем, которое в настоящее время доступно, вероятно, будет OnLive. Поскольку эта служба доставляет аудио- и видеосодержимое только от клиента, который безопасно работает в центре обработки данных, единственным способом мошенничества было бы по существу создание человеческого ИИ, который мог бы анализировать входящий видеопоток и принимать меры на его основе - задача, которой мало кто, если таковые имеются, читеры до.
источник
Все ответы выше великолепны, но я добавлю еще один кусок:
В некоторых играх есть очень надежная функция воспроизведения, которая позволяет сохранить воспроизведение каждой игры после ее завершения в компактном формате и просматривать его различными способами - с разных точек зрения игрока, пользовательским интерфейсом статистики в реальном времени и так далее.
Пример, с которым я очень хорошо знаком: Starcraft 2. Один из способов, которым Blizzard блокирует хакеров, заключается в получении мошеннических доказательств в качестве повторов игры.
Примером использования в FPS может быть: если вы играете в игру и подозреваете, что другой человек обманул хакера на стене, вы смотрите реплей, а затем видите, что в его обычном видении переигровки он не мог иметь видел тебя и бросил гранату за угол или что-то еще.
Затем вы сообщаете о нем с повтором, и если доказательства против него достаточно хороши, он забанен. Насколько я знаю, компании, которые занимаются этим, принимают только серьезные доказательства или многочисленные источники доказательств того же поведения перед тем, как запретить.
Таким образом, это не метод борьбы с отладкой, это система отчетов пользователей, которая позволяет удобно доказывать мошенничество с помощью человека.
источник
Это может быть не полный ответ, но у меня есть некоторый вклад здесь. Один из лучших способов предотвратить обман - это запутывание или использование C / C ++. Это не позволяет людям изменять клиентский код.
источник