Обфускация или скрытие обновлений состояния сервера от клиента - PullRequest
0 голосов
/ 23 мая 2009

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 23 мая 2009

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

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

2 голосов
/ 23 мая 2009

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

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

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

1 голос
/ 23 мая 2009

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

...