Почему в доте1 никогда не будет анти-мапхака

Читеры – вечная проблема большинства игр. Единственный верный путь исключить их – перейти на систему абсолютного недоверия.

Игры до появления MMORPG


Когда компьютеры были большими, а игры маленькими, никто и не думал о борьбе с читерами. Найти игру с поддержкой сетевого протокола было довольно сложно, да и уровень технологий тогда подразумевал, что двое будут находиться в одной комнате. Естественно, читерство в подобных случаях кончалось после разбитой губы, либо, в более интеллигентных городах, позорным изгнанием.

Отсутствие массового интернета делало читерство в сетевой игре невыгодным, так как попасть на сервер вновь было невозможным. Динамический IP? Анонимизатор? Не в то время.

Обработка информации и первое недоверие


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

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

В Warcraft 3 этот вопрос решился просто – каждый клиент отправляет хосту информацию о своем действии, а тот выполняет действие у себя и сравнивает полученный результат. Если клиент сказал, что купил юнита за 100 голда, а у хоста на момент получения пакета ясно видно, что игрок имеет 50 голды, то покупки юнита у хоста и других клиентов не произойдет, и со временем возникнет ошибка синхронизации с дисконнектом хакера.

Система проста, логична и довольно шустро работает.

С другой стороны, возникала проблема, когда хост сам мог пользоваться читами, и его клиенты вылетали из-за несоответствия. Первое время подобным игрались на Battle.net, а после пары патчей ладдер перестал учитывать подобные игры. Тут же начались абузы с обрывом соединения, чтобы не терять и не отдавать врагу очки при проигрыше, и можно сказать, что и здесь исправить ситуацию не удалось.

Принцип работы мапхака для Warcraft 3 довольно прост. Раз вся игра идет на компьютере клиента, и этот компьютер обязан знать, есть ли голд у врага или сколько урона нанеслось другому юниту во время атаки, то эту информацию можно узнать и хакеру.

Maphack и Warcraft 3 – бессмысленная борьба


Каждое действие игрока передается хосту, который проверяет его на соответствие и затем рассылает остальным клиентам. В результате каждый клиент знает действия других игроков, однако не видит их. Всё, что делает мапхак – это внедряется в код программы и заставляет видеообработчик думать, что все игроки расшарили себя для хакера. Сам процесс игры же не подозревает об этом, и поэтому всегда отвечает “не видно”, если его спросить, кодом или внутри самой карты.

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

Warcraft 3 AntiMaphack System — пожалуй, одна из самых известных систем по защите карт. Часть её функций даже легла в DotA, когда ввели команду -ah, однако она была столь быстро взломана, что не произвела никакого впечатления на хакеров.

Пытаешься скрыть точки с миникарты пустышками – они подменяют пустышки обратно на точки. Скрываешь юнитов, делая их прозрачными – они выключают поддержку прозрачности и видят как обычно. Без полной переработки движка исправить эту ситуацию нельзя, поэтому мапхак будет в Warcraft 3 вечно, а значит, и в DotA1.

MMORPG и Steam


Именно в них шире всего распространился принцип недоверия, когда КАЖДОЕ действие игрока подвергается сомнению самого сервера. Эти технологии появились намного позже, чем Warcraft 3, и к тому времени широкополосный доступ перестал быть экзотикой. Поэтому решили, что всё должно выполняться непосредственно на сервере, а сам клиент – лишь отправлять то, что он хотел бы сделать, а не то, что он уже сделал.

Как результат – никаких мапхаков в их прямом понимании в MMORPG не существует, так как только сервер решает, когда отправить инфу о монстрах за углом. Steam также использует валидацию данных при помощи сервера, тем самым гарантируя – в Dota 2 мапхак появится только при взломе самих серверов Steam.

В Warcraft 3 игрок отдает приказ, и он выполняется на его машине, транслируясь серверу. В Dota 2 игрок просит выполнить приказ, и уже сервер решает, можно ли его выполнить. В Warcraft 3 приказ юниту “идти” отдается всем клиентам. В DotA 2 об этом приказе знает только сервер и игрок, поэтому следить за передвижением остальных физически невозможно.

Проще говоря, как сервер скажет, так и будет – идеальная формула защиты. Конечно, это жрет трафик, занимает время и увеличивает пинг, но в наш век гигабитных каналов эти условности никого не волнуют.

12 комментариев

avatar
занимательная информация, спасибо друг.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.