Почему редактирование памяти клиента в некоторых MMO позволяет им обманывать?

19

Почему редактирование памяти игрового клиента работает? Почему так много инструментов «защиты от взлома» приходит с клиентами?

Если бы я разрабатывал игру «клиент-сервер», все происходило бы на сервере (симуляция игрового мира), и клиенты были бы только пассивными потребителями, получавшими обновления статуса части мира рядом со своими персонажами, отправляя только некоторую информацию, такую ​​как нажатия клавиш или команды перемещения / действия. Может быть, я что-то здесь упустил, но с таким дизайном любой хак, как повышение моего STR на 200 в памяти клиента (если значение присутствует вообще), просто не будет иметь никакого эффекта.

Единственное объяснение, которое я могу себе представить, состоит в том, что игры, в которых работает редактирование памяти, позволяют частям симуляции выполняться на клиенте и на сервере, а затем просто периодически синхронизировать всех клиентов. Я могу понять, что дизайн для игр в реальном времени со стратегией с фиксированным количеством игроков после настройки матча, но почему в MMORPG? Это стратегия по снижению нагрузки на сервер?

Хатору Ханьсу
источник
2
Помимо нагрузки на сервер, также существует проблема с задержкой. Например, Minecraft обрабатывает все перемещения на стороне клиента просто потому, что это самое простое решение (из чисто клиентского перемещения, прогнозирования на стороне клиента или замедленного движения). (Minecraft не имеет основы прогнозирования, поскольку обычно это медленная игра, поэтому прогнозирование движения будет большой работой и, возможно, ненадежным)
user253751

Ответы:

21

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

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

Существует также проблема отфильтровывать другие простые хакерские операции с памятью, которые могут сопоставлять информацию и передавать нажатия клавиш и другие данные обратно через клиента быстрее, чем обычно реагирует человек. Или они могут искать информацию, которая может быть передана клиенту, но еще не обязательно видимой (например, позиции существ, которые находятся рядом, но еще нигде не отображаются, как это было обычно в ранних взломах карты Diablo).


источник
Это объясняет интерес к тому, чтобы взглянуть на память игрового клиента и заинтересованность в предотвращении этого. Взлом телепортации, который я видел лично в последней игре, в которую играл.
Hatoru Hansou
2
Интересно, что в игре Ark: Survival Evolved говорится, что все они проверены на сервере (вплоть до входных данных, iirc). Не совсем MMO типа WoW, но он поддерживает 70ppl серверов в альфа-версии (плюс тонны NPC-диносов и построенных игроком структур). Конечно, вы можете почувствовать отставание, но оно становится лучше. Я предполагаю, что это будет становиться все более и более популярным, поскольку технология становится лучше.
нарезка
5
«70 человек» - это, по крайней мере, на порядок (на самом деле, несколько человек) меньше людей на сервер, чем поддерживаемые ММО, над которыми я работал. Также имейте в виду, что почти все говорят, что они делают все на сервере, просто как способ не дать хакерам возможность взломать разработку.
@slicedtoad Я собирался упомянуть об этом. Обратите внимание, что, поскольку большинство ММО в любом случае используют экземпляры, метод ARK может работать внутри них. Это просто невозможно (пока) сделать это для большого количества игроков.
Мачт
10

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

Например, притирка в MMO: если «бот» знает, что такое моб, он может посылать команды игровым клиентам, чтобы выбрать моба, нажимать на него до тех пор, пока его жизнь не станет равной 0, собирать добычу, ополаскивать и повторять. При этом, даже если все изменения в симуляции сделаны / подтверждены серверной стороной, некоторые игроки могут обманывать. Команды могут быть отправлены с помощью фальшивых щелчков мыши или нажатий клавиш или записи в память.

Это одна из причин, почему ММО используют защиту памяти.

Vaillancourt
источник
Хорошо, у ботов больше смысла, даже если вы не можете перевести себя в режим бога, программа, которая делает все за вас, тоже обманывает. Но почему «хакеры» в игре, в которую я играл, могут убить одним ударом? Разве это не указание на редактирование игровой памяти и сервера, как-то проверяющих эти изменения?
Hatoru Hansou
1
@HatoruHansou Да. И раздражает то, что беспилотный бот может работать сам по себе, поэтому представьте себе, что группа из 10 компьютеров контролируется одним работником, занимающимся золотым бизнесом, персонажами онлайн и активными 24 часа в сутки ... ваша MMO разрушена. У некоторых даже будет специальная обработка для других игроков («Не оставайтесь на моем газоне, это моя комната» (был там ... Lineage II в начале)).
Vaillancourt
Позвольте популяции ботов расти без контроля, и ваша игра может скоро выйти из бизнеса. Хорошо, одного бота достаточно, чтобы оправдать защиту от взлома. Я подожду немного дольше, прежде чем принять ответ.
Hatoru Hansou
@HatoruHansou уверен :) Я не уверен, что у меня есть все причины для защиты памяти в любом случае :)
Vaillancourt
6

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

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

Что касается того, почему это еще не сделано многими MMO, я могу думать только о дополнительной нагрузке на сервер и «задержке отклика», которая связана с наличием полностью авторитетного сервера, поскольку это просто нарушает восприятие и отзывчивость игры.

Грег Куинн
источник
Это объясняет эффективность хаков памяти. У вас есть ссылки на статьи / статьи об отсутствии авторитетного дизайна сервера?
Hatoru Hansou
4
Загрузка - не единственная проблема - отзывчивость - это ключ. Любая сетевая игра в реальном времени должна использовать методы сокрытия времени ожидания. Чтобы убедиться, что все согласны, на сервере должен быть способ упорядочить события, которые произошли на каждом из клиентов, - попытаться избежать ситуаций, таких как «Я выстрелил в тебя первым», «Нет, я выстрелил в тебя первым». Speedhacks для игр, таких как Counter-Strike, полагаются на злоупотребление этой синхронизацией, манипулируя задержкой, воспринимаемой сервером и т. Д. (Это одна из причин, по которой большинство серверов CS бьют по игрокам с задержкой выше 100-200 мс).
Луаан
3
Если вы не делаете строго пошаговую игру, этого просто невозможно избежать. Задержки будут существовать всегда, и все компьютеры, участвующие в сетевой игре, должны договориться о «общем времени» для упорядочения событий. Даже с лучшими системами для управления задержками всегда будут существовать несоответствия, но мы очень хорошо умеем их скрывать. Проблема в том, что как только вы начинаете делать эти крошечные вещи, легче позволить незаметной ошибке проскочить - скажем, позволить клиенту опубликовать убийство одного и того же монстра дважды, если он сделает вид, что второе убийство произошло перед первым убийством. Это трудно .
Луаан