Комментарии 60
Например в 7 Days to Die китайские читеры (с китайскими IP) начисто игнорируют античит, совершая форменную жесть. (Например почти мгновенное раскапывание того, что по механу должно бы раскапываться многие часы).
Есть-ли в этом античите проверка на заведомо недопустимые действия в игре (ну или по крайней мере на подозрительные), или все это целиком на откуп самой игре отдается?
upd.
Случайно вспомнил, что все-таки что в 7 days to die Easy Anticheat используется.
А как у battleye работает соединение с сервером? Я заметил, что когда у того проблемы с соединением с сервером, то он кикает не сразу при присоединении к игровому серверу, а минут через пять игры. Это сделано с какой-то целью (и при обнаружении читов будет так же, типа чтобы сразу не показывать, что античит спалил читера) или «так получилось»?
Предполагаю, что если бэкенд программисты говнокодят, и доверяют клиенту без каких-либо проверок, то тут никакой античит не спасет.
проверка на заведомо недопустимые действия в игре
Это должно делаться сервером.
Вроде в идеале ему надо слать только команды(ну там сдвинуть ьолванчика, повернуть, действие).Лимиты установить дело не сложное. Ну и не слать данные лишние игроку.
Так по идее многие читы(типа ускоряющих) сами отвалятся, разве нет?
Поправте если не так.
Так можно дойти до того, чтобы просто стримить игру видеопотоком, большинство читов отпадёт. Останутся лишь боты, автоматизирующие рутинные операции, работающие через всякие системы машинного зрения.
Ну, бот(особенно что на OpenCV и дергает мышь\клаву) вообще странно запрещать.
Ничем не хуже плохого игрока, рекламу в игры пока особо не пихают(то есть доход не упаадет).
И если у нас не доилка с free2pay где цель создать "дискомфорт решаемый за долю малую" - нет смысла.
На счет стриммить - накладно.
На счет мощностей - сервер и так должен иметь данные о свех игроках, тупо потому что должем сказать одному игроку что надо отрисовать рядом модельку другого игрока. Драфика только вырасти может объем, но у нас и каналы не чета тому что в 2005 было.
А количества игроков(WоW всякие не в счет) - обычно не более 64штук. То есть вообще фигня, там даже в WoW скорее всего процентов на 10-20 будет прирост нагрузки.
И да, кажется они давно "на пол шишечки" делают так.
При большом пинге иногда происходят "телепортации" часто в виде отката назад. Видимо происходит синхронизация осостояния с сервером.
Упс. А вот то, что может стать неиграбельно особенно при плохом соединении - это я не подумал, ведь временной лаг, то да сё.
Я думаю всё обуслолвено именно этим, ведь между командой на машине, передачей серверу и ответом пройдет время, раньше мы рисовали картинку уже(иногда сверяя с сервером), то теперь или ничего не изменится(кроме потенциально частых "телепортов") или будем ждать ответа "теперь ты находишься вот тут".
Поставим лимит на скорость бега условно 10м/с. А админ берет и добавляет мод на «допинг для легкоатлетов» и персонажи под ним могут бегать условно 20м/с. Как быть с античитом? Отрезать возможность ставить моды? Ну это не очень вариант. Позволять модам менять лимиты? Ну ок, тогда появятся читеры которые бегают 20м/с без «допинга». Делегировать модам определение логикм проверки на «превышение лимитов», на свое усмотрение? Во первых — а почему вообще мод должен брать на себя работу античитов. А во вторых, а как мод проверит что нет еще одного мода на «супердопинг», который дает скорость бега 30м/с?
Я конечно встречал античит моды на сервер (например против воллхака и чита на полеты в майнкрафте), но это очень серьезная нагрузка на сервер и не всегда это работает так, как надо. Например я лично сталкивался с ситуациями когда потери пакетов сервером воспринимались как попытка читерить (конкретно «летать»).
Собственно по этому есть античит, который по сути работает как антиврус (только с другой целью) — следит чтобы в файлы игры ничего не лезло, чтобы ничто не подменяло библиотеки на не одобренные партией и правительством, чтобы ничего не лезло в трафик, чтобы ничего не лезло со стороны в фреймбуфер, не нажимало кнопки и т.п.
>Как быть с античитом? Отрезать возможность ставить моды?
Теоритически таки да.
Если я правильно понял то в вашем примере игру делали одни, моды и сервер держат другие, а античит скорее всего третьи(как было с CS1.6).
И что в 1.6, что в "мирке танков" моды творили такое что "ну вообще"(а античит к 1.6 помнится кидал в бан если открыть Оперу, было дело).
Плюс, один фиг во первых это все попахивает презумпцией виновности(не хорошо так чморить своих пользователей), а во вторых то что творится с пакетами которые ушли с машины античит не ведает, можно попробовать подменять их если есть желание.
То есть у нас архитектура приложения кривая(если так хотим что бы всё было честно - такая себе идея сообщаять серверу "вот мои координаты, скорость и точка попадания от моего выстрела", будут телепортироваться, летать и убивать с любого угла карты, круче только сообщать серверу данные о игровых деньгах, патронах и прочем) но перекидываем геморой на юзера.
И вот у него тормоза от античита, ложные срабатывания, а уж если игру под WINE запускает - вообще никак.
PS. Я уже забыл все мысли по этому поводу(комент проверялся примерно с Января), птому вероятно вышло еше более путано чем раньше.
В своё время ради интереса написал маленькое решение по противодействию таким программам поиска и изменения критических значений в памяти, как ArtMoney, путем хранения числа в шифрованном (а потому и избыточном) виде с методами манипуляции значением динамически.
Проверка целостности 7z.dll это очень смешно.
Помню еще в начале-середине 2000ых, так обходили кривые корейские античиты, которые преимущественно боролись с DLL Injection с помощью проверки целостности Import Address Table.
Обход: скачивались исходники соответствующей версии 7zip, пересобирались с нужными изменениями, и клались в папку с игрой :P
И кто может производить обыск имущества?
А вот представьте себе, что вам, для того, чтобы прочитать книгу (продающуюся в магазине) надо пустить в дом частных детективов, которые прощупают все швы на всех трусах в поисках чего-то, что им не нравится.
Как вы думаете, как быстро такую лавочку прикроют?
Именно по этой причине я перестал покупать игры с навороченными античитами — слишком интрузивно, а отдельный комп для игр (или консоль) мне не хочется покупать.
Специального котла в аду заслуживают однопользователькие оффлайн игры с античитами, да ещё иногда требующие интернета для игры локально.
Мне кажется, отличная тема для сутяжничества с участием роспотребнадзора и антимонопольщиков.
Хотя… в самом магазине ведь могут и не требовать досмотра, коробочку (или лицензию) выдадут, но вот чтобы начать игру — придётся согласится (EULA при установке, причём к магазину отношения не имеющая), но вы можете отказаться и потребовать деньги назад.
Если же говорить про покупки онлайн — то это вот, мне кажется, не совсем публичное место — нужна регистрация (вот уже и аналогия с членством в клубе), которая, в свою очередь, тоже может иметь определенные условия.
В общем, всё сложно… поэтому остаётся голосовать кошельком.
Однако есть другая сторона монеты — Я готов использовать и античит Faceit'a. Это(насколько мне известно), один из самых эффективных античитов, который, конечно, все равно обходят, но это очень сложно. Он настолько «жесткий», что с ним даже fps ниже на 10-15%. Он вообще лезет везде, даже запускается от администратора, вроде бы.
У меня отдельная машина как раз для игр и Я готов на использование чего угодно, лишь бы комфортно играть. В конце концов — Я купил игру и играть умею неплохо, но желания запускать это поделие уже нет.
вот из-за этого игровой компьютер превращается в консоль, на которой можно запускать только одну игру. потому что можно либо потерять несохраненные данные в других программах, либо получить бан за запущенную софтину. у меня так было, когда запустил steam параллельно с игрой, но там, возможно, другой античит среагировал.
Вот например
Просто экстремально низкие настройки графики, а какой эффект :)
Это уже выглядит как дискриминация некоторых пользователей.
Бан за слабый компьютер.
Обычно стараются не допустить посторонний код в процесс. Для этого, к примеру, хукают LoadLibrary, проверяют валидность подписей уже загруженных DLL, блокируют создание новых потоков через CreateRemoteThread, проверяют стандартные функции на наличие посторонних хуков
Взаимодействие с драйвером и сервисом может идти с подписью ECDSA, что отобьет желание модифицировать передаваемые данные
В любом случае читать статью было весьма интересно. Спасибо!
Взаимодействие с драйвером и сервисом может идти с подписью ECDSA,
Приватные ключи все равно ж у клиента лежат, так что какая в этом польза?
Некоторые интеловские материнки позволяют подключать аппаратный отладчик через один из USB портов. Вот где простор для хакинга!
Или своя PCI карточка с DMA… Тоже можно неплохо развернуться.
Ну и банальную виртуализацию никто не отменял, конечно же.
Есть куча проверок у разного софта на эту тему, основаны на специфических инструкциях процов и/или их комбинации.
Это точно справедливо для ARMv8, но думаю что и для Intel с AMD тоже должно быть правдой.
Я участвовал в создании античита внутри игры. Как раз пытались не допустить посторонний код в процесс.
LoadLibrary и CreateRemoteThread каким-то явным способом не блокируются. Создание потоков удалось заблокировать побив PE Header процесса, но его нужно было восстанавливать при создании нужный потоков внутри игры или используемых библиотек. Эта защита продержалась день. Возможно на уровне драйвера можно и защищённее сделать.
Если не считать подмены dll, которую вроде бы легко победить, все проблемы от древнего WriteProcessMemory, который может писать в любой процесс. По-моему в современных системах это что-то лишнее и не безопасное. Стоило бы запретить подобные функции если не из системы в целом, то хотя бы для приложений собранных с какими-то особыми флагами.
Написать содержательный чит используя только манипулирование памятью процесса через ReadProcessMemory/WriteProcessMemory не такая уж и простая задача для разработчика читов, защититься от этого поможет разве что драйвер, и то не на 100%. Основные силы были брошены на защиту от dll injection, а так же на защиту периметра самой игры, если вдруг вредоносный код проникнет в процесс
Любой античит не дает 100% защиты. Главная цель значительно усложнить обход, что бы создание нового чита занимало слишком много времени
Я наблюдал как разные группы читоделы писали свои собственные версии, не делились наработками друг с другом, уставали и не доводили свой проект до конца
Можно их использовать для выявление читеров, но не банить сразу, а сливать к себе сами читы и анализировать их работу.
Самое интересное во всём этом — античит по факту является трояном, причём довольно крутым трояном, который умеет загружать и исполнять любой полученный с сервера код и официально допущен пользователем до своей машины.
Хочешь заразить десятки тысяч компьютеров? Утащить у пользователей данные платёжных карт и пароли? Надо взломать сервер управления какого-нибудь античита, а дальше дать ему команду на поиск необходимых данных.
Настраиваю себе компьютер для работы и периодических игр.
Уже понял, что нужно ставить отдельные копии Windows под игры и работу, диск рабочей копии в обязательном порядке шифровать, иначе очередной шелл-код очередного античита сможет утащить оттуда всё, что ему захочется.
Остался только один вопрос — нужна ли отдельная копия Windows под каждую игру или достаточно одной на всех? И насколько велика вероятность, что античит одной игры начнёт воровать данные учётки того же Steam'а через установленный драйвер.
Чтобы броня серьёзно вырвалась вперёд, можно сделать, например, так:
Весь профессиональный соревновательный гейминг перенести на консоль.
Добавить поддержку клавиатур и мышей в выпускаемые на консоли игры по умолчанию.
Консоль, желательно, должна быть на x86-несовместимом железе (процессор — точно, видеокарта может быть и стандартной)
Память устройства должна быть зашифрована чем-то вроде developer.amd.com/sev (чтобы исключить хардварный мод для считывания и изменения состояния памяти)
Ну и, естественно, очевидные вещи вроде исполнения только подписанного кода и т.д.
Вот тогда можно будет с высокой долей вероятности сказать, что игроки пользуются только теми возможностями игры, которые задумывались разработчиками изначально.
Тогда все возможные «хаки» будут иметь чисто аппаратную природу (например, распознавание изображения на видео и отправка команды на мышь)
Справедливости ради отмечу, что создать безопасную архитектуру на аппаратном уровне можно. Но будите ли вы плеваться от того, что там всего лишь 1.5ГГц и относительно не высокий IPC на ядро. Что для вас важнее, безопасность или производительность? Готовы ли сменить десятилетний "стек технологий" ради новой и безопасной архитектуры?
+Все чисто аппаратные эксплоиты, что я лично знаю, были созданны с целью повышения производительности, за исключением естественно.
1) Поставить что-либо нелицензионное, на лицензионную приставку — не всегда тривиальная задача.
2) Даже если поставить, то словить бан будет в разы обиднее, т.к. бан на пека — это необходимость купить новую игру, а приставку могут и окирпичить (хотя бы в плане онлайна).
Реверс-инжиниринг популярного античита BattlEye