Comments 52
А это все реально хоть как-то работает?
Например в 7 Days to Die китайские читеры (с китайскими IP) начисто игнорируют античит, совершая форменную жесть. (Например почти мгновенное раскапывание того, что по механу должно бы раскапываться многие часы).
Есть-ли в этом античите проверка на заведомо недопустимые действия в игре (ну или по крайней мере на подозрительные), или все это целиком на откуп самой игре отдается?

upd.
Случайно вспомнил, что все-таки что в 7 days to die Easy Anticheat используется.

А как у battleye работает соединение с сервером? Я заметил, что когда у того проблемы с соединением с сервером, то он кикает не сразу при присоединении к игровому серверу, а минут через пять игры. Это сделано с какой-то целью (и при обнаружении читов будет так же, типа чтобы сразу не показывать, что античит спалил читера) или «так получилось»?

Предполагаю, что если бэкенд программисты говнокодят, и доверяют клиенту без каких-либо проверок, то тут никакой античит не спасет.

Не работает. Я держал большую европейскую коммунити по арма3. Поток читеров не прекращался. Как и в любых других РС онлайн играх.

Можно читить и в консольных онлайн играх.


Кажется, тут можно сформулировать так: поток наговнокоженных левой пяткой игр не прекращается.

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

Практически не работает. Раньше активно бегал в пубг и читеров было 1-2 за несколько игр. Пол года назад начался страшный наплыв все тех же китайских читеров, которые по сей день составляют 30-50% игроков на сервере(из ста). Можно представить, что сейчас происходит в игре. Видел один раз надпись о том, что игрока заблокировало прямо во время игры, но разработчики очевидно ничего не хотят предпринимать.
Спасибо за статью.

В своё время ради интереса написал маленькое решение по противодействию таким программам поиска и изменения критических значений в памяти, как ArtMoney, путем хранения числа в шифрованном (а потому и избыточном) виде с методами манипуляции значением динамически.

Проверка целостности 7z.dll это очень смешно.
Помню еще в начале-середине 2000ых, так обходили кривые корейские античиты, которые преимущественно боролись с DLL Injection с помощью проверки целостности Import Address Table.
Обход: скачивались исходники соответствующей версии 7zip, пересобирались с нужными изменениями, и клались в папку с игрой :P

… Я забыл уточнить, кто владеет оборудованием, где всё это безобразие твориться? Может ли пользователь отказаться от услуг столь пристального досмотра.

И кто может производить обыск имущества?
Боюсь тут как в аэропорту, отказаться можно, но полететь никуда не удастся.
В аэропорту досмотр требуют согласно законодательству.
А вот представьте себе, что вам, для того, чтобы прочитать книгу (продающуюся в магазине) надо пустить в дом частных детективов, которые прощупают все швы на всех трусах в поисках чего-то, что им не нравится.

Как вы думаете, как быстро такую лавочку прикроют?
К сожалению не прикроют — если будут просить подписать соответствующее соглашение (где вы явно всё разрешаете) — оно не противозаконно. Можете не подписывать и не пускать детективов, но и книгу не получите.

Именно по этой причине я перестал покупать игры с навороченными античитами — слишком интрузивно, а отдельный комп для игр (или консоль) мне не хочется покупать.

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

Мне кажется, отличная тема для сутяжничества с участием роспотребнадзора и антимонопольщиков.
Переименовываем магазин в «Игровой клуб» и вопрос решен.

Хотя… в самом магазине ведь могут и не требовать досмотра, коробочку (или лицензию) выдадут, но вот чтобы начать игру — придётся согласится (EULA при установке, причём к магазину отношения не имеющая), но вы можете отказаться и потребовать деньги назад.

Если же говорить про покупки онлайн — то это вот, мне кажется, не совсем публичное место — нужна регистрация (вот уже и аналогия с членством в клубе), которая, в свою очередь, тоже может иметь определенные условия.

В общем, всё сложно… поэтому остаётся голосовать кошельком.
Тут аналогия не с книгой, а с соревнованиями, например, с гонками. Если ко всем предъявляются одинаковые требования (мощность двигателя и т.п.), но за их соблюдением никто не следит, то очень скоро единственными победителями станут жулики, а для остальных соревнование потеряет смысл.
Выше уже про соглашение сказали и в случае с PUBG она при первом запуске спрашивает согласен ли пользователь на использование античита.
Однако есть другая сторона монеты — Я готов использовать и античит Faceit'a. Это(насколько мне известно), один из самых эффективных античитов, который, конечно, все равно обходят, но это очень сложно. Он настолько «жесткий», что с ним даже fps ниже на 10-15%. Он вообще лезет везде, даже запускается от администратора, вроде бы.
У меня отдельная машина как раз для игр и Я готов на использование чего угодно, лишь бы комфортно играть. В конце концов — Я купил игру и играть умею неплохо, но желания запускать это поделие уже нет.
А почему не проверяются перехваты функций? Можно ведь вызовы DirectX перехватить.
Потому что этот «античит» (который считает себя в праве кидать машину в синьку, судя по отрывку об lsass) ловит конкретно тех, о ком он знает, что они плохие ребята — по артефактам, присущим именно им.

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

UFO landed and left these words here
он банит, если параллельно VMware запущен (
А я просто хотела накатить виртуалку, пока комада заканчивала матч…
если они перехвачены, то программа общается не DirectX напрямую, а с какой-то другой dll
Какая-то dll обращается к DirectX, и дальше что? Это может быть программа показа fps на экране или другой информации.
Возможностей очень много и без перехватов.
Вот например
Видео под катом


Просто экстремально низкие настройки графики, а какой эффект :)
видимо при повторном воспроизведении модераторам кажется, что человек видит через кусты и стены
Я как-то писал чит под одну игру, которая мне нравилась. Так там картинка после переделки была ещё жёстче. Листвы не было совсем, танки раскрашены в цвета радуги, с отметками, где у них броня тоньше. Самые опасные юниты — офицер и снайпер были выкрашены в максимально кислотные цвета (розовый и салатовый в полосочку). Дымы были отключены совсем, за исключением ожного опасного типа гранат. У них был яркий оранжевый дым, потому что важно было знать, куда граната упала. Ну и плюс был самописный мапхак, аим, инфа о противниках, макросы на действия и т.д. Просто графон важен для начального вовлечения в игру, а потом уже важен игровой процесс, а не графон. У меня всегда настройки графики либо выкручены в ноль, либо вот как на видео понижены ещё сильнее.
Повторюсь: «графон важен для начального вовлечения в игру, а потом уже важен игровой процесс, а не графон». Например, когда я играл в браузерки, то специально писал скрипты, убирающие всю ненужную графику из интерфейса и оставлявшие лишь текстовую информацию. При длительной игре цели уже не посмотреть на красивый закат, а затащить катку, разгромить противника и т.д. Не до сентиментальностей.
И да, жёсткие читы (мапхаки, аимы, вырезатели текстуры) я никогда не отдавал в публичное пользование. А союзникам если и давал их, то с привязкой к своему серверу (так, что мог их удалённо выключить). Потому что некоторые читы могли спокойно убить игру совсем.
Ну дык с графоном теряется и часть игрового процесса, например, камуфляж, ныканье в тени и т.д.
Не говорю уж про валхаки, убивающие весь CQB процесс.

Это уже выглядит как дискриминация некоторых пользователей.
Бан за слабый компьютер.

У нас есть драйвер, сервис, а методы проверки так же эффективны как проверки названий окон и запущенных процессов.
Обычно стараются не допустить посторонний код в процесс. Для этого, к примеру, хукают LoadLibrary, проверяют валидность подписей уже загруженных DLL, блокируют создание новых потоков через CreateRemoteThread, проверяют стандартные функции на наличие посторонних хуков
Взаимодействие с драйвером и сервисом может идти с подписью ECDSA, что отобьет желание модифицировать передаваемые данные
В любом случае читать статью было весьма интересно. Спасибо!
Взаимодействие с драйвером и сервисом может идти с подписью ECDSA,

Приватные ключи все равно ж у клиента лежат, так что какая в этом польза?

Некоторые интеловские материнки позволяют подключать аппаратный отладчик через один из USB портов. Вот где простор для хакинга!

Или своя PCI карточка с DMA… Тоже можно неплохо развернуться.

Ну и банальную виртуализацию никто не отменял, конечно же.
Ну это банят известные виртуалки. В принципе, вполне можно написать тонкий type 1 гипервизор и запустить винду прям под ним, как есть. Его невозможно будет задетектить, но при этом он будет иметь полный доступ к памяти машины.
Виртуальная машина всегда работает немного не так, как хост.
Есть куча проверок у разного софта на эту тему, основаны на специфических инструкциях процов и/или их комбинации.
Ну она работает немного не так только в настоящих гипервизорах, где хочешь-не хочешь, а приходится эмулировать часть периферии. Если же гипервизор будет рулить только second stage MMU (чтобы спрятать себя) и не мешать доступу к остальному железу, то никакого способа узнать о его наличии я не вижу.
Это точно справедливо для ARMv8, но думаю что и для Intel с AMD тоже должно быть правдой.

Я участвовал в создании античита внутри игры. Как раз пытались не допустить посторонний код в процесс.
LoadLibrary и CreateRemoteThread каким-то явным способом не блокируются. Создание потоков удалось заблокировать побив PE Header процесса, но его нужно было восстанавливать при создании нужный потоков внутри игры или используемых библиотек. Эта защита продержалась день. Возможно на уровне драйвера можно и защищённее сделать.


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

Как и я. LoadLibrary блокируется простым хуком и проверкой стека вызовов. CreateRemoteThread сложнее, но возможно даже из usermode без административных прав.
Написать содержательный чит используя только манипулирование памятью процесса через ReadProcessMemory/WriteProcessMemory не такая уж и простая задача для разработчика читов, защититься от этого поможет разве что драйвер, и то не на 100%. Основные силы были брошены на защиту от dll injection, а так же на защиту периметра самой игры, если вдруг вредоносный код проникнет в процесс
Любой античит не дает 100% защиты. Главная цель значительно усложнить обход, что бы создание нового чита занимало слишком много времени
Я наблюдал как разные группы читоделы писали свои собственные версии, не делились наработками друг с другом, уставали и не доводили свой проект до конца

Юзермод античит это шутка юмора, сейчас даже школьники умеют загружать неподписанные драйвера, спасибо криворуким вендорам. А дальше читай память хоть до потери пульса. Остается только понять и простить читарастов :D

Первые реализации античитов на основе нейросетей показали очень неплохие результаты. В районе 96%.
Можно их использовать для выявление читеров, но не банить сразу, а сливать к себе сами читы и анализировать их работу.
тоже слышал, что VAC химичит с нейросетями, но результата пока не видно. В кс читаки всё-ещё кишат.

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


Хочешь заразить десятки тысяч компьютеров? Утащить у пользователей данные платёжных карт и пароли? Надо взломать сервер управления какого-нибудь античита, а дальше дать ему команду на поиск необходимых данных.


Настраиваю себе компьютер для работы и периодических игр.
Уже понял, что нужно ставить отдельные копии Windows под игры и работу, диск рабочей копии в обязательном порядке шифровать, иначе очередной шелл-код очередного античита сможет утащить оттуда всё, что ему захочется.


Остался только один вопрос — нужна ли отдельная копия Windows под каждую игру или достаточно одной на всех? И насколько велика вероятность, что античит одной игры начнёт воровать данные учётки того же Steam'а через установленный драйвер.

Мне кажется (с учётом поведения Windows 10), что если пользоваться этой системой и играть в современные игры, то нужна виртуальная машина с пробросом видеокарты. Всё остальное — недостаточно безопасно.
Некоторые игры, кстати, уже детектят такую конфигурацию.
Ещё один пример гонки оружия и брони.
Чтобы броня серьёзно вырвалась вперёд, можно сделать, например, так:

Весь профессиональный соревновательный гейминг перенести на консоль.
Добавить поддержку клавиатур и мышей в выпускаемые на консоли игры по умолчанию.
Консоль, желательно, должна быть на x86-несовместимом железе (процессор — точно, видеокарта может быть и стандартной)
Память устройства должна быть зашифрована чем-то вроде developer.amd.com/sev (чтобы исключить хардварный мод для считывания и изменения состояния памяти)
Ну и, естественно, очевидные вещи вроде исполнения только подписанного кода и т.д.

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

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

Справедливости ради отмечу, что создать безопасную архитектуру на аппаратном уровне можно. Но будите ли вы плеваться от того, что там всего лишь 1.5ГГц и относительно не высокий IPC на ядро. Что для вас важнее, безопасность или производительность? Готовы ли сменить десятилетний "стек технологий" ради новой и безопасной архитектуры?
+Все чисто аппаратные эксплоиты, что я лично знаю, были созданны с целью повышения производительности, за исключением естественно.

Only those users with full accounts are able to leave comments. Log in, please.