Запутывание или скрытие обновлений состояния сервера от клиента

StackOverflow https://stackoverflow.com/questions/900367

Вопрос

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

  • Игрок А прячется в кустах лицом на запад
  • Игрок B подкрадывается к игроку A с востока или подкрадывается сзади игрока A

Популярный "хак", написанный для этой игры, заключался бы в том, чтобы у игрока A был радар, показывающий ему местоположение игрока B, даже если он не может видеть игрока B на своем экране, а игра не поддерживает радар.Этот взлом возможен, потому что сервер отправляет клиенту игрока А информацию обо всех игроках в определенном диапазоне (возможно, в пределах плоскости отсечения игрока А).Было бы нереально (насколько я знаю), чтобы сервер пытался отправлять клиенту игрока А информацию только об игроках в рамках просмотра игрока А.Поскольку сервер должен отправлять информацию обо всех ближайших игроках клиенту игрока А, игрок А мог бы написать хак, который накладывает радар на его экран, который заполняется путем просмотра данных, отправляемых клиенту, и получения обновлений состояния игрока противника.Я думаю, что они широко известны как "радарные" или "настенные" взломы.

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

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

Это было полезно?

Решение

Это единственный способ.В дополнение к punkbuster, вам следует провести некоторые исследования по Надзиратель (помимо википедии, есть много интересного, на что я не буду здесь ссылаться).Это очень интересная битва, учитывая законы дизайна онлайн-мира ...

Клиент находится в руках врага.

Другим элементом этого является то, что люди заменят свои видеодрайверы модифицированными драйверами, которые дают им преимущества (объекты будут непрозрачными или подсвеченными, плееры нельзя будет "ослепить" и т.д.).Я не уверен, проверяют ли какие-либо игры наличие модифицированных драйверов или нет.

Другие советы

Простое шифрование может быть жизнеспособным для работы в режиме реального времени с современным оборудованием, но проблема в том, что для того, чтобы клиент мог получить доступ к зашифрованным данным, у него должен быть ключ.Если у клиента есть ключ, то, вероятно, программе-мошеннику не составит особого труда найти и извлечь его.Лучший способ для сервера - отправлять позицию B в A только в том случае, если это вообще возможно увидеть B.Обмануть по-прежнему будет возможно, но в несколько меньшей степени.

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

Была программа под названием "eqmon", которая сделала что-то подобное для игры Everquest.Сначала игровые пакеты были полностью незашифрованными и содержали всех персонажей (как ПК, так и NPC) для всего уровня.В конце концов, они закончили тем, что использовали шифрование, чтобы усложнить отслеживание пакетов, но eqmon обошел это путем грубого форсирования ключа шифрования (сервер создавал новый ключ каждый раз, когда вы вводили уровень, поэтому расшифровка ключа иногда занимала несколько минут).Затем они изменили его таким образом, чтобы ваш клиент получал обновления только для ПК или неигровых персонажей в пределах определенного диапазона вашего местоположения.Это сделало eqmon менее полезным для кемпинга и мониторинга "редких спавнов" далеко на том же уровне.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top