Как узнать есть ли в игре античит. Лишаем зрения античит систему многопользовательских игр. Полная свобода действий

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

WARNING

Warden (переводится с английского как смотритель, надзиратель) - именно так решили назвать защитную систему разработчики популярнейших в своих жанрах игр из Blizzard. Система, являясь фактически частью Battle.net, используется в таких проектах, как World of Warcraft, StarCraft II и Diablo 3. Только лишь по официальным данным за все время были забанены десятки тысяч аккаунтов Battle.net, и немалая часть при этом - заслуга Warden.

Для начала, пожалуй, стоит выяснить, что собой представляет Warden. Система состоит из двух частей: серверной и клиентской, и, само собой, мы будем иметь дело только с клиентской частью. Как уже было сказано ранее, Warden не является неотъемлемой частью игрового кода. Код клиентской части подгружается динамически с Battle.net в виде образов, отдаленно напоминающих по своей структуре Portable Executable, которые затем отображаются по случайным адресам в адресном пространстве игрового процесса. Стоит также отметить, что большая часть кода клиентской части Warden обфусцирована и может изменяться от одной игровой сессии к другой.

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

  1. Получение списка относительных адресов для сканирования.
  2. Считывание необходимого количества байт по каждому из адресов.
  3. Расчет хешей.
  4. Компоновка пакета с хешами и отправка его на сервер.

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

Против системы

Нейтрализовать Warden, просто отключив его либо заблокировав его работу, не удастся: система устроена таким образом, что серверная часть в любом случае должна получать от клиентской ответные пакеты, которые, в свою очередь, должны содержать информацию о сканировании. Следовательно, выход только один - не попадаться. Добиться этого можно как минимум тремя способами:

  1. Обходить стороной заведомо опасные адреса при внесении модификаций в код.
  2. Использовать косвенное внедрение, перехватывая один из методов DirectX - Device.EndScene().
  3. Прятать все совершенные модификации на лету (при сканировании).

Первый вариант будет работать до поры до времени и по большому счету обходом как таковым не является. Второй вариант (перехват EndScene()) действительно неплохо работает, функция вызывается после завершения построения каждого выводимого на экран кадра и перехватывается, например вполне легальными программами видеозахвата, что не дает Warden возможности однозначно трактовать изменения в коде функции как запрещенные модификации. Тем не менее вариант больше годится для ботов и успешно ими эксплуатируется на протяжении уже нескольких лет. Третий вариант идеально подходит для статичных модификаций (как, например, включение отрисовки всей карты в Star Craft - maphack), кроме того, его реализация сама по себе интереснее и технологичнее. Именно последний вариант подробно и рассмотрим далее.

INFO

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

Очевидно, что для сокрытия произведенных модификаций необходимо внедриться в сканирующий код Warden. Как известно, этот код не присутствует в процессе со старта, к тому же при загрузке получает случайный адрес. На первый раз его можно обнаружить при помощи отладчика, просто установив breakpoint на чтение любого из сканируемых адресов (от какого-либо старого, давно детектируемого хака). Например, для последнего (на момент написания статьи) билда World of Warcraft, установив breakpoint по относительному базе основного образа адресу 0x0045A6F0 , мы попадаем в следующий участок кода:


Сердце сканера Warden masm push esi push edi cld mov edx, dword ptr ss: mov esi, dword ptr ss: mov eax, dword ptr ss: mov ecx, edx mov edi, eax shr ecx, 2 je short ; Здесь данные попадают во временный буфер, с которого будет рассчитываться хеш. ; Достаточно подставлять вместо измененных байт оригинальные rep movs dword ptr es:, dword ptr ds: mov cl, 3 and ecx, edx je short rep movs byte ptr es:, byte ptr ds: pop edi pop esi ret

Опытным путем было установлено, что обнаруженный код не подвергается полиморфным изменениям, в отличие от всего остального модуля, к тому же изменялся он за последние годы лишь однажды, что делает его идеальной мишенью для внедрения. Но так как этот код - часть загружаемого динамически модуля, то необходимо будет также перехватить момент его появления в процессе, чтобы внести изменения до первого исполнения. В случае с WoW загрузчик является частью кода игры и находится прямо в Wow.exe (для 32-битной версии), его можно найти, перелопатив километры листингов в дизассемблере, или пойти более хитрым путем. Память под загружаемые образы модулей Warden выделяется функцией VirtualAlloc() , лог вызовов, с указанием места, откуда был произведен вызов, будет содержать адрес, принадлежащий загрузчику.

C++ void VA_hook_(DWORD dwCallAddr, DWORD dwMemBlock, DWORD dwSize) { if (dwMemBlock && dwSize > 0x2000) { Logger::OutLog("Allocated block:%.8x - %.8x, called from:%.8x\r\n", dwMemBlock, dwMemBlock+dwSize, dwCallAddr); } }

При этом нет нужды перебирать все записи: после логина и входа на игровой реалм необходимый модуль Warden будет уже загружен, можно просто произвести поиск по всему адресному пространству процесса бинарного паттерна, соответствующего ранее найденной процедуре сканирования данных:

C++ Scanner::TPattern WardenPattern ("\x56\x57\xFC\x8B\x54\x24\x14\x8B\x74\x24\x10\x8B\x44\x24\x0C\x8B\xCA\x8B\xF8\xC1\xE9\x02\x74\x02\xF3\xA5", "x26"); DWORD WardenProc = (DWORD) Scanner::ScanMem(&WardenPattern); if (WardenProc) { Logger::OutLog("Warden::Scan proc:0x%.8X\r\n", WardenProc); } else Logger::OutLog("Warden::Scan proc not found\r\n");

Таким образом мы определим точное текущее местоположение необходимого нам кода Warden, а лог вызовов VirtualAlloc() позволит определить, откуда именно была запрошена память под этот код, указав тем самым на загрузчик модулей Warden. Проанализировав в дизассемблере код загрузчика, можно найти подходящее место для перехвата. Для этого нужно найти подходящий момент, когда все секции образа, полученного из Сети, будут успешно отображены в АП процесса, после этого можно будет внедрять перехват, модифицирующий код Warden. Подходящим участком может быть вызов VirtualProtect() , устанавливающий финальные права доступа к секциям:

Masm lea ecx, push ecx ; lpflOldProtect push dword ptr ; flNewProtect push eax ; dwSize push ebx ; lpAddress call ds:VirtualProtect test byte ptr , 0F0h jz short loc_A5BE9C push ; dwSize push ebx ; lpBaseAddress call ds:GetCurrentProcess push eax ; hProcess call ds:FlushInstructionCache

Код функции-трамплина, переход на которую установлен вместо call ds:VirtualProtect , может выглядеть следующим образом:

C++ // Вызывается для каждой секции __declspec(naked) void WardenLoader_hook(LPVOID lpAddress, SIZE_T dwSize, DWORD flNewProtect) { __asm { push ebp mov ebp, esp pushad } if (flNewProtect==PAGE_EXECUTE_READ) // Для секции, содержащей исполнимый код WardenModulePatch(lpAddress, dwSize); // Патчим код Warden __asm { popad pop ebp jmp dword ptr } }

Поиск данных по бинарному паттерну

Чтобы делать модифицирующие код патчи не зависящими от версии игр и не перебивать раз за разом смещения, потребуется возможность поиска по двоичному паттерну (шаблону). В этом случае на основе кода, требующего изменения, создается паттерн, содержащий достаточно информации для того, чтобы при совпадении можно было уверенно сказать, что нашлось именно то, что требовалось. Существует масса различных возможностей реализации поиска по шаблону. В предлагаемом мной решении поиск производится по шаблону вида: xA?B (где A и B - натуральные числа, x - точное совпадение байт, количество которых указано следующими символами, ? - пропускаемые байты).

C++ // Инициализируем паттерн // Первый параметр - данные для сравнения, второй - шаблон сравнения Scanner::TPattern SamplePattern ("\x56\x57\xFC\x00\x00\x90", "x3?2x1"); /* Этот паттерн соответствует данным, у которых первые три байта совпадают с 0x56, 0x57, 0xFC, затем идут два произвольных байта, а последний совпадает с 0x90 */ // Поиск по заданному паттерну в ограниченной области, с началом pMemBase и размером dwSize DWORD dwProc = (DWORD) Scanner::FindPattern(pMemBase, dwSize, &SamplePattern);

Полные исходники можно посмотреть в прилагаемом проекте.

Патчер

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

C++ /* pAddr - указатель на место производимой модификации pData - данные для замены dwDataSize - размер данных */ BOOL Patcher::MakePatch(PBYTE pAddr, PBYTE pData, DWORD dwDataSize) { BOOL fRes = false; DWORD dwOldp; if (VirtualProtect(pAddr, dwDataSize, PAGE_EXECUTE_READWRITE, &dwOldp)) { // Запоминаем оригинальные байты pPatchStruc = &Patches; // Последний элемент pPatchStruc->addr = dwAddr; pPatchStruc->len = dwSize; memcpy(pPatchStruc->org , (PVOID) dwAddr, dwSize); // Записываем новые memcpy(pAddr, pData, dwDataSize); dwPatches++ fRes = true; } return fRes; }

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

C++ bool PatchVirutalProtect() { bool bRetval = false; PBYTE bCode = (PBYTE) "\xE8\x90\x90\x90\x90\x90"; // call rel32 DWORD pProc = (DWORD) GetProcAddress(GetModuleHandleA("KernelBase.DLL"), "VirtualProtect"); *((PDWORD)(bCode+1)) = (DWORD)&VP_hook - ((DWORD)pProc+5); if (Patcher::Instance()->MakePatch((PBYTE)pProc, bCode, 5)) { Logger::OutLog("VirtualProtect patched at: %x\r\n", pProc); bRetval = true; } else Logger::OutLog("VirtualProtect patch failed\r\n"); return bRetval; }

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

INFO

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

Невидящее око Warden’а

Теперь, когда есть вся необходимая информация и инструменты, осталось подменить сканирующую процедуру Warden своей, которая вместо модифицированных данных будет подставлять оригинальные. Хеши в таком случае будут идентичны тем, что хранятся на сервере, и изменения кода останутся незамеченными.

Чтобы в поле зрения Warden не попало ни одного измененного байта, при каждом вызове сканирования необходимо искать пересечение множеств сканируемых адресов с адресами пропатченных данных. Так как патчи, скорее всего, не будут идти один за другим (это не имеет смысла) - будет максимум одно пересечение для одного скана и данные можно будет брать из структуры, связанной с каким-то одним конкретным патчем. Все возможные варианты пересечений сводятся к одному двойному условию: либо адрес начала множества сканируемых байт входит во множество адресов патча, либо наоборот. Таким образом, мы должны перебирать все патчи, проверяя заданное условие:

C++ // Попадают ли сканируемые адреса под какой-либо патч? for (unsigned int i=0; i< dwPatches; i++) // перебираем все патчи if ((PatchList[i].addr - dwAddr < dwSize) || (dwAddr - PatchList[i].addr < PatchList[i].len)) // Находим пересечение { pCurrentPatch = &(PatchList[i]); break; }

Получив сопряженную с текущим сканированием структуру с информацией о патче, подменить данные не составит труда:

C++ if (!pCurrentPatch) { // Сканируется непропатченная область - копируем напрямую memcpy(pOutBuff, (PVOID)dwAddr, dwSize); } else { // Побайтовая обработка for (unsigned int i=0; i< dwSize; i++) { unsigned int delta = dwAddr+i - pCurrentPatch->addr; byte* pCurrent; // Был ли байт по этому адресу пропатчен? if(delta < pCurrentPatch->len) pCurrent = pCurrentPatch->org + delta; else pCurrent = (PBYTE)(dwAddr+i); pOutBuff[i] = *pCurrent; } }

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

SOURCE

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

Proof of concept

В качестве демонстрации работоспособности обхода с извлечением какой-то практической пользы было принято решение произвести модификацию кода World of Warcraft по относительному смещению 0x008C9A3E , которое проверяется сканером Warden. Процедура, соответствующая этому смещению, ответственна за проверку прав на исполнение Lua-скрипта (многие из функций WoW API заблокированы для пользователя и могут быть использованы только родным пользовательским интерфейсом). Участок кода в области этого смещения выглядит следующим образом:

Masm mov ebp, esp mov edx,dword ptr ss: mov eax,dword ptr ds: xor ecx,ecx push esi cmp dword ptr ds:,ecx je short 01309A84 cmp edx, 22

Само смещение соответствует условному переходу после сравнения глобальной переменной, содержащей идентификатор уровня доступа для текущего контекста, с нолем (ноль соответствует самым высоким правам). Заменив условный переход безусловным, получаем возможность использовать любые функции WoW API, создавая сложные и «умные» скрипты, автоматизирующие многие игровые действия (самый примитивный пример использования: забиндить всю ротацию спеллов на одну кнопку, с проверкой кулдаунов и так далее, что сделать изначально невозможно). Упрощенный код установки патча выглядит примерно так:

C++ PBYTE bCode = (PBYTE) "\xEB"; // JMP SHORT Scanner::TPattern Pattern("\x33\xC9\x56\x39\x0D\xFF\xFF\xFF\xFF\x74\x44\x83\xFA\x22", "x5?4x5"); DWORD dwProc = (DWORD) Scanner::ScanMem(&Pattern); if (dwProc) { DWORD dwProcChangeOffset = dwProc+9; if (Patcher::Instance()->MakePatch((PBYTE)dwProcChangeOffset, bCode, 1); }

После установки патча становятся доступны прямо из макросов «защищенные» функции WoW API, а в логе активности Warden мы можем наблюдать предотвращенные попытки просканировать пропатченную область. Убедиться в этом ты можешь, скомпилировав и опробовав прилагаемые к статье исходники.

Как насчет остальных проектов Blizzard?

В статье был рассмотрен вариант перехвата кода загрузчика для WoW, у других проектов этот код находится в обфусцированной библиотеке battle.net.dll, по которой в принципе невозможно создать не зависящий от версии библиотеки паттерн для поиска кода загрузчика. В этом случае, как один из вариантов, можно перехватывать все вызовы VirtualProtect(), совершенные из battle.net.dll, обрабатывая их примерно следующим образом:

C++ void VP_hook_internal(DWORD dwCallAddr, DWORD dwMemBlock, DWORD dwSize, DWORD flNewProtect) { // Вызов был произведен из battle.net.dll if (dwCallAddr - WardenLoaderHack::dwBNetBase < WardenLoaderHack::dwBNetImageSize) { // Секция кода if (dwMemBlock && flNewProtect==PAGE_EXECUTE_READ) { MEMORY_BASIC_INFORMATION Mem; // Ищем начало блока памяти if (VirtualQuery((PVOID) dwMemBlock, &Mem, sizeof (MEMORY_BASIC_INFORMATION))) { // Первые четыре байта - сигнатура модуля Warden if (*(PDWORD)Mem.AllocationBase == "2LLB") { Logger::OutLog("Warden image found at:%.8X, code section:%.8X\r\n", Mem.AllocationBase, dwMemBlock); // Патчим код Warden WardenModulePatch(dwMemBlock, dwSize); } } } } }

Полная свобода действий

Возможность безнаказанно вносить любые изменения в игровой клиент открывает широчайшие перспективы для дальнейших исследований. На самом деле в играх Blizzard можно сотворить абсолютно все, что только можно себе представить или захотеть. Об одних лишь возможностях разблокированных скриптов Lua в WoW можно было бы написать отдельную статью. Ведь даже простые скрипты могут избавить игрока от рутинных действий или снизить зависимость от реакции и внимательности, позволив уделять чуть больше времени другим вещам. При этом возможности свободных модификаций клиента не ограничиваются простой разблокировкой тех или иных возможностей. В общем, дерзай!

Я хочу обратить ваше внимание на античит, собственно спросить о возможности замены Myac на EAC.

Вот немного о нем:

В этой теме мы рассмотрим античит EAC (Easy Anti Cheat). Там как русского FAQ толком и нету, то мы постараемся собрать воедино всю известную нам информацию. Для начала расскажем о программе - данный античит является, пожалуй, одним из лучших и постоянно обновляемых античитов, который используется на многих популярных серверах, в том числе и на киберарене. Easy Anti Cheat является клиент-серверной программой, поэтому использовать его на своем сервере является возможным только при покупке лицензии, которая обойдется желающим:

50 игровых серверов - 75евро / месяц.
100 игровых серверов - 125евро / месяц.
150 игровых серверов - 175евро / месяц.

В данный момент EAC поддерживает такие игры:

Counter-Strike 1.6
Counter-Strike: Source
Counter-Strike: ProMod
Team Fortress 2

Возможности:

Сканирование памяти, проверка контрольных сумм, анти аимбот, блокирование доступа к ядру и многое другое
- Усовершенствованная система снятия игровых скриншотов
- Защита против обратного проектирования
- Статистика игроков онлайн
- Предотвращение замены спрайтов и звуков
- Принудительная установка 32битных текстур для всех игроков (Counter-Strike 1.6)

Настройка и запуск EAC

Для начала напомним, что EAC работает только с серверами, где установлена лицензия на программу. Вы не сможете использовать этот античит, например, играя у себя на сервере. После скачивания ЕАС Вы увидите один ехе файл, Вам нужно его запустить. Так как ЕАС является портативной программой никакой установки не требуется.

Правильная последовательность действий для удачной интеграции ЕАС:
Запуск Steam
Запуск EAC
Запуск CS / CS / CS / TF2

После запуска EAC Вы должны увидеть такое окошко:

Перед Вами появится список доступных для подключения серверов. Для выбора просто кликните один раз на соответствующей иконке и Easy Anti Cheat выдаст информацию о количестве играющих на сервере человек. После этого можно запускать игру.

Проблемы и их решения

1) Проблема: У меня одна из перечисленных ошибок:
- Каждый раз когда я запускаю клиент, он у меня просит обновится и ничего не происходит
- Античит вообще не запускается!
- У меня проблемы с инициализацией при запуске игры
- У меня игра зависает, если я запускаю EasyAntiCheat!

1) Решение: Некоторые антивирусы и/или фаерволы мешают ЕАС нормально работать.
Есть антивирусы которые распознают ЕАС как вредоносное ПО и это не странно так как античит сканирует память и внедряется в игровые процессы для контроля. Если Ваш антивирус блокирует ЕАС попробуйте на время отключить его, скачать ЕАС и запустить, после этого возобновить работу антивируса. Тоже самое касается и фаервола - он может блокировать порты, которые ЕАС использует для подключения. Попробуйте отключить его на время запуска ЕАС. Альтернативой отключения антивируса/фаервола является добавление ЕАС в список доверенных или разрешенных.

2) Проблема: Уже при запуске игры, Easy Anti Cheat выдает следующую ошибку:
"Error getting required access privileges!
Please run Steam as administrator."

2) Решение: Для Windows 7 64bit иногда необходимо запускать Steam с правами администратора.
Для начала закройте Steam, нажмите правой кнопкой на ярлыку и выберите "Свойства"
В свойствах откройте вкладку "Совместимость" и в самом низу поставьте птичку возле "Выполнять эту программу от имени администратора". Нажмите ОК.

3) Проблема: После того, как я запускаю Steam от имени администратора, у меня не работает Ventrilo/TeamSpeak/Mumble !
3) Решение: Для того, чтобы эти программы могли использовать горячие клавиши, запускайте их от имени администратора тоже.

4) Проблема: Я обновил антивирус и теперь он определяет Easy Anti Cheat как вирус!
4) Решение: Как мы уже писали выше, из-за специфики работы ЕАС, антивирусы дают ложные тревоги.
Или отключите активирус на время запуска ЕАС, или добавьте исключение для ЕАС в настройках антивируса.

5) Проблема: Каждый раз при запуске EasyAntiCheat он просит скачать свежую версию, но у меня скачана последняя!
5) Решение: Возможно Ваш браузер скачивает клиент из сохраненной копии в кеше
Очистите временные файлы браузера.

6) Проблема: Сообщение на сервере: Easy Anticheat not enable on server.
6) Решение: Сервер EAC не сразу берет под контроль игровой сервер, поскольку EAC является клиент-серверной программой и для этого процесса требуется некоторое время. Нужно просто подождать несколько минут.

Каждый кто знает, что такое EAC прошу тоже отписаться
Это реально работает, EAC обойти намного сложней и дороже, можно сказать практически невозможно!

Заранее спасибо!

Разработчики игры в очередной раз рассказали о том как работает новая система античита под названием Mail.Ru AntiCheat. Как утверждают сотрудники Crytek, в игре изначально с каждым обновлением постоянно развивался свой уровень защиты против читеров, но практика показала, что она была не настолько эффективна как того хотелось.

Ранее из публикаций на сайте игры стало известно, что в компании Mail.Ru разработали свою систему, которая выполняет все просчеты на стороне сервера и тем самым может быстро отследить любые попытки взлома. После ввода новой античит системы уменьшилось количество жалоб в техподдержку о нарушениях и было заблокировано около миллиона аккаунтов нарушителей. MRAC на текущий момент совершенствуется и дополняется новой информацией о всевозможных читах и уязвимостях.


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


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

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

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

Часто задаваемые вопросы:

Что такое VAC?

VAC (Valve Anti-Cheat – Античит Valve) - автоматизированная система, созданная для обнаружения читов на компьютерах пользователей. Если пользователь подключится к защищенному системой VAC серверу с компьютера, на котором установлены распознаваемые читы, он будет заблокирован системой VAC и больше не сможет играть в эту игру на серверах с защитой VAC.

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

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

Следующие действия не приводят к блокировке системой VAC:

  • Использование чат-программ, аналогичных X-Fire или Overwolf
  • Конфигурация аппаратного обеспечения
  • Обновление системных драйверов, таких как драйвера видеокарты

Как мне избежать блокировки VAC?

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

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

За дополнительной информацией о защите своего аккаунта обратитесь к статье «Рекомендации по безопасности аккаунта» .

Дополнительная информация о руководящих правилах Valve может быть найдена в соглашении подписчика службы Steam .

Если меня заблокировала система VAC, что это означает для моего аккаунта?

За подробной информацией о том, как блокировка VAC влияет на ваш аккаунт, пожалуйста, обратитесь к статье .

Как сообщить Valve о новом чите?

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

Все письма будут рассмотрены сотрудниками, ответственными за разработку VAC.

Как пожаловаться на читера?

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

Примечание: Система VAC не блокирует пользователей исключительно на основе жалоб. При вынесении решения о блокировке пользователя во внимание также принимаются прочие факторы.

Какие игры защищены VAC?

Список игр, защищенных системой VAC, можно найти в магазине Steam по следующей ссылке .

Если меня заблокировали, могу ли я играть на незащищённых серверах?

Да, если игра предоставляет такую возможность.

Некоторые игры, защищённые системой VAC, допускают существование серверов, не защищённых при помощи VAC. Заблокированные пользователи по-прежнему могут играть на незащищённых серверах игры, за читерство в которой они были заблокированы. Пожалуйста, имейте в виду, что не все игры имеют незащищённые серверы.

Пострадаю ли я, если тот, кому я предоставил свою библиотеку игр, занимается читерством?

В чём отличие между блокировкой сервера и блокировкой VAC?

Блокировка VAC делает невозможной игру на всех защищённых серверах в Steam, тогда как администраторы серверов могут заблокировать кого-то на своих серверах, но это не настолько серьёзно, как в случае с VAC. Valve не может помешать блокировке на пользовательских серверах. Владелец сервера имеет право заблокировать любого игрока по какой бы то ни было причине.

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

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

Большинство серверов, даже не большинство, а почти все сервера посещают игроки, которые используют читы. И только от трёх до семи процентов серверов себе ставят качественные античиты. Но всё равно. Как бы продукт борьбы с читами не создавался, к нему будет написан свой античит, это всего лишь проблема времени. Но сегодня, мы с вами разберёмся в стандартных системах фиксации читов на серверах кс. И так, давайте рассмотрим такую систему VAC. VAC — Valve Anti-Cheat, это античит разработанный компанией Valve, представляет собой модуль защиты серверов от читов, он распространяется между клиентами игры, через защищённый канал сервера VAC. То есть игрокам нет нужны скачивать сторонний софт, и устанавливать его дополнительно к игре. Если появляется новый модуль VAC, то сервера cs автоматически скачивают обновление, и устанавливают в фоновом режиме. Это очень удобно, так как не надо обновлять клавишей, или следить админам за последними патчами. Так что VAC является основной лицензионной версией античита для вашего сервера. Но давайте рассмотрим, как работает система VAC на вашем сервере cs, и как она отслеживает читаков. Во первых вак начинает сканировать буферную память компьютера игрока на наличие запущенных читов, она не сканирует жёсткий диск. Если ничего не обнаружено, то она пропускает на сервер. Ещё главной особенностью является сверка лицензионного ключа cd-key с официальной базой всех ключей. Суть заключается в том. Что если игрока с лицензионной контрой поймали с читом автоматически, то он попадает в бане не только одного сервера кс, но и на все сервера, подключенные к системе защиты VAC. Так что не советуем вам использовать читы на таких серверах. Если вы попадёте в этот список, то пути назад не будет. Существует правда одна проблема, и заключается она в той же сканировки памяти. Система может ошибочно посчитать запущенную какую то программу как чит, и забанить вас. Компания Valve стремиться улучшить свою систему путём ежемесячных тестирований на разные программы, чтобы когда программа проверяла на наличие читов, то она относила сторонний софт к доверенным, а читы в запрещающим. И тем самым обходила мимо хороших геймеров.

Подметим ещё, что VAC имеет метод борьбы с читами, как wallhack. В VAC интегрирован блокиратор этого чита. Суть защиты заключается в том, что этот блокиратор проверяет все точки прицела, куда он направлен. И работает по системе «Если вижу, то бан, иначе кик». Система работает стабильно и позволяет отслеживать всех воллхаккеров, которые решились смотреть через стену. Но если такая ситуация, что была найдена дырка в работе этого блокиратора, и в последних версиях читов wallhack, существует обход данного алгоритма защиты. Но, как известно VAC не спит, и уже не один раз выпускает заплатки, на возникшие косяки в коде.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то