Привет xss.pro! 
Более 20 лет я веду борьбу с VAC – Valve Anti-Cheat.
Накопленный мною опыт можно применять не только в разработке читов – в любой области где важно незаметное присутствие в системе (в режиме пользователя с ограниченным Ring 3 доступом — внешним). В рамках статьи мы рассмотрим принципы работы данной анти-чит системы, ее эволюцию, основные техники и приемы противодействия обнаружению.
Предыстория
8 ноября 2000 года состоялся релиз Counter-Strike. Компания Valve выкупила игру и начала тяжелую битву с читерами. В наследство от Half-Life достался анти-чит PunkBuster. Valve решила отказаться от PunkBuster в пользу своей системы – Valve Anti-Cheat в 2002 году.
Что такое VAC?
VAC – полностью автоматизированная система, выполняющая комплекс мероприятий по предотвращению модификации игры с целью получения преимущества.
Архитектура
Система VAC состоит из нескольких взаимосвязанных Client-side модулей, их цель – защита от замены и модификации исполняемых файлов клиента Steam, игры и динамически подключаемых библиотек .DLL, а также Server-side части для выявления читеров с помощью сбора и анализа игровой статистики. В марте 2018 года Valve обнародовала AI-based подход – VACnet.
Принципы работы
Client-side имеет деление на VAC2 и VAC3 модули.
VAC2 используется в устаревших играх, например Counter-Strike 1.6 и Source.
VAC3 применяется в таких играх как Counter-Strike Global Offensive и Dota 2. При этом используется и VAC2.
VAC2 не имеет принципиальных отличий от PunkBuster и работает по схожему принципу:
– сканирование в реальном времени с использованием встроенной базы данных (хэши MD5 и CRC32, FileSize, FileName);
– проверка настроек игрового движка (например, прозрачность текстур);
– запущенные процессы в системе (посредством GetProcessesByName).
Максимально примитивная технология обнаружения.
Историческая справка
На хак-форумах часто предлагали услугу модификации, как правило, заключающуюся в редактировании файла с помощью любого Hex Editor и рисовании нулей в конце файла. Времена 50 рублей и WebMoney. Можно было озолотиться. Поток клиентов был неисчерпаем, после способ был слит, что вызвало негодование и экзистенциальный кризис местных хакеров
Как обойти
В приватных читах использовались рандомизаторы, пользователь получал библиотеку с инжектором, которые имели случайные названия файлов, уже модифицированные случайным образом.
В борьбе с Valve случались интересные случаи. Так, однажды наш софт был обнаружен. После дампа и изучения свежих модулей я заметил интересную особенность, Valve применили следующий трюк: сравнение с про-базой происходило по MD5 хэшу части файла. Таким образом был убит паблик способ модификации. Для обхода детектирования по части хэша хорошо подходит scrambling (перемешивание файла на диске).
На схеме можно наглядно наблюдать, что хэш вычисляется не по всему файлу, а по его части. Для примера я смешал только два блока, в реальной практике нужно применять более сложные алгоритмы перемешивания. При этом обращаю ваше внимание, данная техника работает только в случае статического анализа на диске, НЕ в памяти.
Продолжение следует? Интересна ли подобная тематика?

Более 20 лет я веду борьбу с VAC – Valve Anti-Cheat.
Накопленный мною опыт можно применять не только в разработке читов – в любой области где важно незаметное присутствие в системе (в режиме пользователя с ограниченным Ring 3 доступом — внешним). В рамках статьи мы рассмотрим принципы работы данной анти-чит системы, ее эволюцию, основные техники и приемы противодействия обнаружению.
Предыстория
8 ноября 2000 года состоялся релиз Counter-Strike. Компания Valve выкупила игру и начала тяжелую битву с читерами. В наследство от Half-Life достался анти-чит PunkBuster. Valve решила отказаться от PunkBuster в пользу своей системы – Valve Anti-Cheat в 2002 году.
Что такое VAC?
VAC – полностью автоматизированная система, выполняющая комплекс мероприятий по предотвращению модификации игры с целью получения преимущества.
Архитектура
Система VAC состоит из нескольких взаимосвязанных Client-side модулей, их цель – защита от замены и модификации исполняемых файлов клиента Steam, игры и динамически подключаемых библиотек .DLL, а также Server-side части для выявления читеров с помощью сбора и анализа игровой статистики. В марте 2018 года Valve обнародовала AI-based подход – VACnet.
Принципы работы
Client-side имеет деление на VAC2 и VAC3 модули.
VAC2 используется в устаревших играх, например Counter-Strike 1.6 и Source.
VAC3 применяется в таких играх как Counter-Strike Global Offensive и Dota 2. При этом используется и VAC2.
VAC2 не имеет принципиальных отличий от PunkBuster и работает по схожему принципу:
– сканирование в реальном времени с использованием встроенной базы данных (хэши MD5 и CRC32, FileSize, FileName);
– проверка настроек игрового движка (например, прозрачность текстур);
– запущенные процессы в системе (посредством GetProcessesByName).
Максимально примитивная технология обнаружения.
Историческая справка
На хак-форумах часто предлагали услугу модификации, как правило, заключающуюся в редактировании файла с помощью любого Hex Editor и рисовании нулей в конце файла. Времена 50 рублей и WebMoney. Можно было озолотиться. Поток клиентов был неисчерпаем, после способ был слит, что вызвало негодование и экзистенциальный кризис местных хакеров

Как обойти
В приватных читах использовались рандомизаторы, пользователь получал библиотеку с инжектором, которые имели случайные названия файлов, уже модифицированные случайным образом.
В борьбе с Valve случались интересные случаи. Так, однажды наш софт был обнаружен. После дампа и изучения свежих модулей я заметил интересную особенность, Valve применили следующий трюк: сравнение с про-базой происходило по MD5 хэшу части файла. Таким образом был убит паблик способ модификации. Для обхода детектирования по части хэша хорошо подходит scrambling (перемешивание файла на диске).
На схеме можно наглядно наблюдать, что хэш вычисляется не по всему файлу, а по его части. Для примера я смешал только два блока, в реальной практике нужно применять более сложные алгоритмы перемешивания. При этом обращаю ваше внимание, данная техника работает только в случае статического анализа на диске, НЕ в памяти.
Продолжение следует? Интересна ли подобная тематика?
Последнее редактирование: