MMO-индустрия: Блог им. Jolly: Есть ли способы бороться с читерством в играх?
Недавно в комментариях к моей статье про первые читы в Bless обсуждался вопрос борьбы с читерами.

Я бы хотел отдельной статьей развить эту тему.

Когда-то давно читы типа iddqd и iseedeadpeople придумывали сами разрабочтики, мы в ввиду отсутствия интернетов узнавали их из различных игровых журналов или от друзей.

Для одиночных игр читы это своего рода easy (а зачастую и god) mode. Когда ты играешь в HoMM3 1 против 7 компов на самом сильном уровне и увел героя на пару ходов от замка и на него напал внезапно комьютер, а ты лезешь в artmoney и вместо 10 скелетов делаешь 10 000 — это ерунда.

MMO-индустрия: Блог им. Jolly: Есть ли способы бороться с читерством в играх?
Проблемы начинаются в сетевых играх. Я бы классифицировал следующие читы:
  • speedhack
  • wallhack
  • auto-aim
  • zoomhack
  • flymode
  • dupe
  • invisible/geo-hack

Ну и что-то экзотическое типа DoS-атаки (не путать с DDoS), купола как в АА и тд. А макросы это не читы, а унылость геймплея, которую проще заменить кликером.

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

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

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

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

Почему появляются читы и как их находят?

Любая игра это набор ресурсов и исполняемый код. Чтобы любой дурак не мог распаковать игру и собрать «улучшенную версию», в последние годы игровые ресурсы и исполняемый файл пакуют с обфускацией (запутыванием) кода. Грубо говоря, не имея нужного ключа — распаковать такие файлы нельзя. Но это только в теории.

Чтобы двигаться дальше, нужно эту теорию немного подтянуть. Я буду объяснять на пальцах, так что к терминологии гуру ИБ могут не приставать=). В криптографии (это не то же самое что обфускация кода, но суть не в этом) используют 2 вида шифрования: симметричное и несимметричное.

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

Открытый ключ так называется не просто так. Это публичная информация, которая, например, есть у сайта https://mmozg.net в SSL сертификате, который вы можете посмотреть нажав «замочек» в адресной строке браузера.

Закрытый ключ хранится только у владельца ключа.

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

То же самое и с пакетированием (упаковкой). Чтобы вы могли запустить игру — где-то на вашем компьютере должен быть ключ (или несколько ключей) для чтения ресурсных файлов. Это симметричный ключ, причем достаточно простой. Иначе бы процедура расшифровки файлов (хоть она и быстрее шифрования этих же файлов) налету для игр в 10-50Гб размером длилась бы слишком долго.

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

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

Это значит, что выдавая потенциальному злоумышленнику файл, пусть даже упакованный и зашифрованный, вы не имеете гарантий от взлома и замены файла нужным злоумышленнику файлами.

Что мы можем сделать, чтобы защитить игру от читов?

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

Мы можем зашифровать канал обмена информацией, увеличив размер передаваемых пакетов (трафика) и снизив скорость работы. Но так как все нужные ключи шифрования лежат в самом клиенте — подменить их не составит труда, было бы желание.

Мы можем контролировать корректность файлов путем отправки периодической каких-то проверочных значений. Например, хэша исполняемого файла игры и сравнивать его с «оригиналом» на стороне сервера. Но никто не мешает читеру всегда выдавать хэш, посчитанный для правильного файла.

Хэширование — преобразование данных любой длины в строку определенной длины. Хеширование необратимо и должно исключать коллизии (когда 2 разных файла выдадут одинаковый хэш).

Чтобы вышеперечисленное работало эффективно, нужно постоянно обновлять файлы геймгварда и исполняемого файла игры. Тогда скачавший/купивший чит игрок вынужден будет ждать очередного «релиза» чита. Это, имхо, самый эффективный способ борьбы с читами, но его редко юзают.

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

Поэтому геймгвард нужно обновлять даже чаще, чем саму игру. А это ведет к тому, что очень сложная программа на вашем компьютере будет менять логику своей работы с каждым патчем и у кучи людей такой фокус не пройдет из-за кривой системы или кривых рук разработчиков геймгварда. Это повлечет риски остаться без легитных игроков, вайна на форуме и тд. Сколько в жизни вы видели постов на форуме про «ваш античит зависает, НИПАИГРАТЬ»?

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

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

Даже если какая-то проверка и существует (на самом деле нет), то сервер проверит обращения по переносу предметов в рюкзаке, взаимодействие с вендорами-НПЦ и другими игроками посредством трейда/аукциона и тд. Проверит ли он вашу скорость передвижения или Z-координату? Думаю что нет. Всем наплевать.

Но ведь кроме технических мер можно использовать и организационные?

Из обращений в саппорт Инновы:
— добрый день, после обновления вашего Фроста у меня перестала работать данная программа: скриншот_la2walker.jpg. Что мне нужно сделать, чтобы она заработала!!!


Во-первых, это адекватное количество адекватных ГМов с нормальной компетенцией в своей работе. А если они еще при этом не будут рисовать шмотки за реал мимо кассы — так вообще на них молиться можно. Но как факт — все ГМы продажные (в РФ точно), может не конкретные люди, но во всех компаниях можно легко найти нужного «специалиста». Плюс платят за такую работу мало и там сидят весьма некомпетентные товарищи.

Во-вторых, нужно мониторить сайты читеров (а они известны всем), особенно на предмет так называемых «паблик-читов» (тех, что доступны любому и не «лочатся» под конкретного покупателя). Нужно иметь ряд специалистов, которые будут читать такие сайты, качать/покупать свежие читы и бороться с ними. Практика показывает, что проактивной работой никто не занимается. Убейте интерес к игре «куполами» — возможно будет реакция.

В-третьих, бан по hardware id/steam-аккаунту и тд. Представьте что вы Valve и продаете контру, плюс миллионы других игр через Steam. Если вы заблочите Steam-аккаунт читеру в контре и он потеряет доступ ко всем купленным играм — это остановит многих, но не тех, кто под читерство будет использовать свежий акк стима. Плюс этот игрок пойдет и засудит вас за то, что он читерил в контре, а вы заблочили ему доступ к купленной игре про май литл пони. Поэтому этот способ просто лишит вас доступа к контре по вашему купленному ключу, но для условно-бесплатных игр финансово наказать читера не выйдет.

Вместо стима можно использовать тот же 4Гейм Инновы. Написать в пользовательском соглашении, что чит в любой из игр Инновы приводит к блокировке аккаунта со всеми играми. Это юридически проще, особенно если игры условно-бесплатные, но не защищает от свежезареганного аккаунта.

В-четвертых, можно законодательно запретить читерить как в Южной Корее. Я что-то не слышал про судебную практику данного закона. Как увижу наказание настоящего корейца — буду рад. Но что делать с русским, сгенерировавшим KSSN или купивший его у левого крестьянина из Кореи за условные 10 баксов? Ничего, а доказать, что читерил крестьянин и наказать его — это уже сюрреализм.

В-пятых, можно проводить «контрольные закупки», то бишь внезапные волны банов, с выдачей предупредительных блокировок. Это требует меньше времени, чем постоянно держать ингейм-ГМов, но такое используют обычно по факту засилия читеров, когда в паблике лежат уже месяц-другой читы и куча народу их юзает. Это плохая мина при плохой игре, а не борьба с читерами.

В-шестых, просто иметь нормальный саппорт и ингейм-ГМов, чтобы игроки могли жаловаться на читеров оперативно. Но тут мы возвращаемся к первому пункту, а так же к фарму данжей на флайхаке до последнего босса патей читеров, где никто товарища не сдаст. В Pefect World так фармили данжи многие.

Вместо итого:

В любом случае бороться с читерами можно ТОЛЬКО комбинированием практически всех этих методик, имея хороший штат специалистов. Но кому кроме игроков это нужно?

В России около 500-600 банков, многие из них работают с живыми клиентами (а не просто отмывают бабло), крутятся «сотни тысяч миллионов» денег, но я вам зуб даю, что в подавляющем большинстве из них нет достаточного штата специалистов по информационной безопасности, чтобы на 99% защититься от взлома. Все работает до стадии «пока жаренный петух не клюнет». В Бангладеше увели часть бюджета страны (ИЗ ЦБ!!!), воспользовавшись раздолбайством работников и, судя по всему, уязвимостью системы SWIFT. А вы хотите чтобы в вашем условном Bless боролись с читами профессионалы и читов не было бы.

Эта история в любом случае борьба меча и щита. Читеры совершенствуют меч до ядерной боеголовки, а разработчики отбиваются щитом из адамантия. А не ломают только неуловимого Джо. Либо хитрого Джо, который соблюдает гигиену и затраты на взлом которого перекрывают выгоду.

p.s. А еще читы это не только зло само по себе, но и возможность подхватить трояна и в лучшем случае стать частью чьего-то бот-нета и DDoS-ить сайт Пентагона периодически, а в худшем случае потерять бабло. Неужели вы думаете, что бесплатный сыр бывает в мышеловках?

MMO-индустрия: Блог им. Jolly: Есть ли способы бороться с читерством в играх?

23 комментария

avatar
Небольшой оффтопик: Если кому-то интересно, у меня в моем блоге на джолли.рф есть цикл статей про информационную безопасность
  • 0
avatar
Но кому кроме игроков это нужно?
Проблема ровно как с допингом. В соревновательных играх с большими расходами и стремлением к победе любые средства хороши. Если бы игрокам не было интересно преимущество, такие штуки никто бы не покупал.
  • 0
avatar
Деньги всё из за денег… впрочем как обычно))
  • 0
avatar
Вот только вчера скинули видос… :D


(свежий FPS-Модуль Star Marine / Alpha 2.6)

Задаешься логичным вопросом — ну и какой интерес в таком геймплее? Игра на лидерборд разве что? Отлично помню, как бросил играть в Battlefield 3-4 изза этой лажи, когда меня убивали через полкарты Каспий… ээ… радиомаяком :D как и всю нашу сторону в 32 игрока. Может оно и к лучшему, что на столь раннем этапе такая проблема уже возникла, больше мотивации ставить хорошую защиту уже сейчас, пока модуль еще не стал частью полноценной Вселенной.
  • +1
avatar
Я могу себе представить только людей с низкой самооценкой, таким образом себе её поднимающих. Потому что в любой действительно соревновательной среде такие штуки всё же раньше или позже выпиливаются, другое дело, что многие воннаби соревновательные игры по факту таковыми не являются.
  • 0
avatar
Как говорилось, «читы — как Виагра. Для тех, кто сам не может».
Никогда не понимал, в чем интерес играть с читами? Поднять так свое ЧСВ? Или просто мелкое злорадное желание испаскудить игру другим?
  • 0
avatar
А макросы это не читы, а унылость геймплея, которую проще заменить кликером.
А я думаю, что макросы — это разновидность ботов и за них нужно банить. Разработчики ГВ2 тоже так думают.

Многие игроки не понимают, что читы — это плохо, и это — весьма актуальная проблема. С макросами ещё хуже, в АА почти никто не осуждал ездящих на конях по кругу. Когда я сказал, что это ботоводство, меня поддержал аж один человек. Также, он заявил, что никому не даст свой аккаунт, а все остальные считают аккаунт-шаринг нормальным явлением. Нет же, это явно запрещено правилами и грозит баном! Так что, просветительскую работу тоже нужно проводить.
  • +1
avatar
Если геймплей унылый и заменяется макросами — это проблема геймплея, а не защиты от читов. Я об этом, а не об оправдании кликеров. В Aika online я даже в паблик скинул код для UOPilot, чтобы показать насколько убогий кач в игре. Хотя сам не юзал макросы.
Комментарий отредактирован 2017-01-01 11:12:18 пользователем Jolly
  • +3
avatar
Ну не бывает в нормальной комплексной игре, чтобы вообще весь геймплей был не унылый и не заменялся макросами. Тем более если речь идет о различных системах прогрессии. Даже в шутерах макросы активно используют, а в целом сложно придумать менее унылый геймплей.
  • +1
avatar
«Хороший» пример Albion Online. Ты можешь переработать много дерева, но для прокачки не можешь скрафтить 200 мечей. А крафт долгий, потом эти мечи ещё нужно закинуть в другую вкладку изучения. Если делать это не макросом, то ты при прокачке крафта просто заколебешься. А кто мешает разрабам сделать поле ввода количества крафта?
  • +1
avatar
Хм… А что плохого в расшаривании аккаунта? Нет, разработчики конечно это не одобряют, однако так ли много они потеряют если я со своего аккаунта дам опробовать игру другу или сестре? Ведь единовременно с одного аккаунта может играть лишь один человек и игровое время все-таки мною оплачено.
  • 0
avatar
Сегодня дашь аккаунт десятку людей, а завтра кто-то из них обидится и удалит все твои вещи или отошлёт их себе и продаст. Даже не будешь знать, кто это сделал. И уйдёшь из игры или будешь морочить голову техподдержке (которая вряд ли что-то вернёт).

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

Также могут задонатить в игру с привязанной кредитки. Деньги потом никто не вернёт.

А ещё часто люди используют одинаковые пароли для игры, почты, контакта, фейсбука и других сайтов. Не надо быть хакером, чтобы проверить тот же аккаунт на самых популярных сайтах.
  • +1
avatar
а все остальные считают аккаунт-шаринг нормальным явлением
Я отвечал лишь на эту цитату.
И да, я согласен с тем, что я иду на определенный риск доверяя свой аккаунт третьему лицу. Просто я никак не могу понять, почему вы ставите аккшаринк(речь не идет о десятке лиц) и макросы (которые поддерживаются любой игровой клавиатурой и мышкой) в один ряд с ботоводством и читерством
  • +1
avatar
Потому что и одно, и другое запрещено игровыми правилами. Да, аккаунт-шаринг не такой уж плохой, макросы хуже, а боты и читы гораздо хуже.
  • -1
avatar
«потому что таков закон.» Ясно-понятно.
  • +1
avatar
Аккшаринг — это не только «дам попробовать», но и драйверы.
  • 0
avatar
Чаще это «я забил, вот мой логин-пасс»
  • 0
avatar
Тогда это особо и не проблема, если забил на игру и тебе всё равно, что с персонажем и его добром будет.
  • 0
avatar
С макросами ещё хуже, в АА почти никто не осуждал ездящих на конях по кругу.
Ээээ, ну не только ты осуждал, мягко говоря.
  • +1
avatar
Я помню здесь даже выкладывали инструкцию, как натравить мобов на иподромщиков =)))
  • +2
avatar
Вот только мобов на Мираже нету.
  • 0
avatar
Там их вроде в океан скидывали как-то, нет? Я уже плохо помню)
  • +1
avatar
нужно просто попросить игроков играть честно, как это сделали варгейминги :D :D :D
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.