Почему редактирование памяти игрового клиента работает? Почему так много инструментов «защиты от взлома» приходит с клиентами?
Если бы я разрабатывал игру «клиент-сервер», все происходило бы на сервере (симуляция игрового мира), и клиенты были бы только пассивными потребителями, получавшими обновления статуса части мира рядом со своими персонажами, отправляя только некоторую информацию, такую как нажатия клавиш или команды перемещения / действия. Может быть, я что-то здесь упустил, но с таким дизайном любой хак, как повышение моего STR на 200 в памяти клиента (если значение присутствует вообще), просто не будет иметь никакого эффекта.
Единственное объяснение, которое я могу себе представить, состоит в том, что игры, в которых работает редактирование памяти, позволяют частям симуляции выполняться на клиенте и на сервере, а затем просто периодически синхронизировать всех клиентов. Я могу понять, что дизайн для игр в реальном времени со стратегией с фиксированным количеством игроков после настройки матча, но почему в MMORPG? Это стратегия по снижению нагрузки на сервер?
источник
Ответы:
Хотя это и идеально, практически невозможно проверить каждый отдельный вход на сервере, как с точки зрения вычислительной нагрузки, так и с точки зрения задержки при подтверждении ввода для клиента.
Следовательно, обычно существует множество вещей, которые не проверены на сервере во многих MMO. В некоторых случаях это включает в себя определенные классы движения персонажа, поэтому существуют телепортация и скоростные хаки. Защита на стороне клиента помогает создать дополнительный барьер для этих хаков, хотя, конечно, при достаточном времени их можно обойти. Чтобы бороться с этим, во многих таких играх использовалась бы стратегия ведения журнала, а также проверки фактов и ротации фактически используемых средств защиты.
Существует также проблема отфильтровывать другие простые хакерские операции с памятью, которые могут сопоставлять информацию и передавать нажатия клавиш и другие данные обратно через клиента быстрее, чем обычно реагирует человек. Или они могут искать информацию, которая может быть передана клиенту, но еще не обязательно видимой (например, позиции существ, которые находятся рядом, но еще нигде не отображаются, как это было обычно в ранних взломах карты Diablo).
источник
Одна из причин, по которой существует защита, заключается в том, что чтение состояния игры может позволить ботам узнать состояние игры и действовать соответствующим образом.
Например, притирка в MMO: если «бот» знает, что такое моб, он может посылать команды игровым клиентам, чтобы выбрать моба, нажимать на него до тех пор, пока его жизнь не станет равной 0, собирать добычу, ополаскивать и повторять. При этом, даже если все изменения в симуляции сделаны / подтверждены серверной стороной, некоторые игроки могут обманывать. Команды могут быть отправлены с помощью фальшивых щелчков мыши или нажатий клавиш или записи в память.
Это одна из причин, почему ММО используют защиту памяти.
источник
Многие ММО разработаны с предсказанием попадания на стороне клиента. Поэтому, если на клиенте есть попадание, он отправляет тот результат на сервер, на котором произошло попадание. В этом случае сервер не является действительно авторитетным, и поэтому возможен обман.
Честно говоря, если бы я разрабатывал MMO, я бы сделал сервер полностью авторитетным, чтобы клиент отправлял только фиксированные входные значения на сервер, а сервер разрешал результат.
Что касается того, почему это еще не сделано многими MMO, я могу думать только о дополнительной нагрузке на сервер и «задержке отклика», которая связана с наличием полностью авторитетного сервера, поскольку это просто нарушает восприятие и отзывчивость игры.
источник