Секреты CockAC

  • Автор темы ToJI9H
  • Дата начала
  • Ответы 31
  • Просмотры 584
  • IV <> V
    • Следите за дальнейшими новостями в официальном паблике проекта в ВК или в треде новостей проекта.
    • Регистрация персонажей открыта!
    • Регистрация топиков персонажей, фракционных топиков и других тредов, связанных с ролевым миром - вновь действуют.

ToJI9H

Профессионал
720
432
Тема для тех, кому интересен принцип работы античита, стоявшего на проекте весь 2023 и частично 2024 год.

- Как он работал в целом?
- Лаунчером в процесс игры встраивалась (инжектилась более корректный термин) DLL-библиотека, содержащая в себе различные системы проверки игры и ПК. Описанное в дальнейшем будет именоваться как "клиентский плагин или часть". На стороне SAMP-сервера находился специальный плагин, в дальнейшем именуемый - "серверный плагин или часть". Кроме того, была еще и аналитическая часть системы, которая принимала решения по автоматическим блокировкам, в дальнейшем именуется как "аналитическая часть". То есть, античит в целом представлял из себя комплексную систему.

- Какую роль исполнял "клиентский плагин"?
- Клиентский плагин на протяжении всей Вашей игры поддерживал сессионное соединение с аналитической частью, если клиентская часть не получала регулярного ответа от аналитической части, то после ряда попыток обменяться данными, клиент просто закрывал игру.
Клиентский плагин при старте игры отправлял запрос аналитической части на создании сессии, вместе с этим запросом отправлялся ряд данных Вашего ПК (Хэш CPU, HWID логистических дисков, MAC-адреса всех интернет-адаптеров, UUID всех учетных записей в системе, имена всех учетных записей, серийный номер материнской платы).

- Как "клиентский плагин" отслеживал встраивание читов в игру?
- Было несколько методов проверки, прежде всего это тупой перебор загруженных DLL-библиотек в процесс игры (gta_sa.exe), поиск определенных byte-паттернов в памяти процесса, сравнение целостности динамической памяти процесса игры, а так-же периодическое получение списка открытых окон для поиска известных читов по имени.

- Как "клиентский плагин" отличал легитимные DLL-библиотеки (по типу оверлея Discord) от запретных?
- "клиентский плагин" периодически отправлял на "аналитическую часть" информацию о загруженных DLL-библиотеках с приложением их имени, MD5-хэш суммы и информации о их подписи сертификатом кода. Наличие официальной подписи у DLL-библиотеки или MD5-хэш в базе разрешенных библиотек, позволял отличить запрещенные библиотеки от разрешенных.

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

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

- Как античит находил SAMPFUNCS-скрипты внутри игры, если они не являются полноценными DLL-библиотеками?
- С помощью неописанного в официальной документации метода SF_GetNextLoadedPlugin, мы получали список всех загруженных скриптов в игру и так-же отправляли отчет об этом на "аналитическую часть". Кроме того с помощью метода SF_DisableConsole скрывалась консоль, открываемая на клавишу ~ (источник).

- Как античит находил CLEO-скрипты?
- Самым глупым способом, простым перебором файлов с расширением .cs в папке клео.

- Как работала "аналитическая часть"?
- Эта часть представляла из себя базу данных со всеми отчетами игроков, активными и архивными сессиями, зарегистрированными пользователями и микро-сервис для принятия решений о блокировке, закрытии игры. Так как "клиентская часть" периодически отправляла отчеты о различных частях игры, системе не составляло труда сравнить различные данные и отправить команду о закрытии игры на "клиентскую часть".

- Как работала система сессий?
- После запуска игры "клиентская часть" отправляла запрос на создание сессии "аналитической части", далее перед появлением окна авторизации на сервере, "серверный плагин" через запрос "аналитической части" проверял наличие сессии и допускал к авторизации, если вкратце, то ник игрока перед заходом в игру изменялся на определенную MD5-хэш сумму состоящую из ника игрока, текущего timestamp и константной соли.
После успешной сверки этой хэш-суммы, игроку присваивался настоящий ник. У сессии были временные ограничения, чтобы не допустить обхода системы через копирование ника из окна со списком игроков на TAB.

- Как "аналитическая часть" блокировала игроков?
- Из отправленных данных о системе, частично или полностью по ним находился пользователь в таблице users и проверялась колонка banned. Как объяснял ранее potop`у, изменить один только MAC-адрес или HWID дисков было недостаточно, нужно было менять все данные комплексно для обхода блокировки.

- Как "аналитическая часть" общалась с "клиентской частью"?
- По принципам REST API, у сессии была активная страница на домене rockac.stalker-rp.net, к которой "клиентская часть" периодически отправляла запросы и по определенным кодам вызывала закрытие игры (источник).



Extra-вопросы:

- Почему extremecheats обходил проверки "клиентской части"?
- У любой DLL-библиотеки как и любой другой программы в Windows имеется определенный набор данных в самом начале кода называемый PE-заголовками. Метод инжектирования этого чита (Reflective Injection) удалял эти самые PE-заголовки и в дальнейшем не числился в списке DLL-библиотек, по просту представляя из себя участок dummy-кода. Такой код очень сложно найти в памяти процесса и осуществить это можно только через поиск определенных магических символов во всей памяти процесса, так как PE-заголовки все до единого содержат два константных символа MZ, с дальнейшим сравнением всех известных PE-заголовков с аномальными, либо через сканирование методом поиска byte-паттернов. Подробнее о поиске можно почитать в этой статье.

- RockAC написан на основе SAMPCAC?
- Нет, идея и реализация была задумана в декабре 2022 года (ранее были наработки в StalkerAnticheat.dll) и написана полностью своими силами.

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

- Где найти исходный код системы?
- https://github.com/0z0sk0/rock-anticheat-client/
 
Последнее редактирование:

ToJI9H

Профессионал
720
432
Еще из интересного:

1. Мы покупали лицензию extremecheats и делали дамп памяти чита, а потом изучали через гидру. У меня до сих пор висит бан в их ЛК за реверс инженеринг))

2. Были дни, когда мы 24/7 чекали логи античита и самостоятельно блокировали чадсов и прочих, помойму потоп легко палился еще на уровне регистрации юцп, потому что использовал один и тот же пароль 123456 вроде бы

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

4. Каждая строка в сурсах обернута в XorStr, функции в LI_FN и прочее только для того, чтобы при открытии дллки клиентского плагина в гидре или иде нельзя было узнать какие строки прописаны в коде и какие вызовы winapi используются

5. Клиентский плагин находил дебаггеры при помощи названий процессов и специальных методов по типу вызова int3 флага на проверку активного дебаггера

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

ToJI9H

Профессионал
720
432
yNs6fXa.png


6T8uk5A.png


BNZSSnG.png
 
  • Мне нравится
Реакции: eblan.gif, морж и ptln

potop

+79605613461
Ивент-команда
489
706
ну экстру ты так и не пофиксил, просто в хостс ввёл запрет на вход соединение с дестрибутивом игры
 

potop

+79605613461
Ивент-команда
489
706
123123 пароль был да, потом перестал
 

ToJI9H

Профессионал
720
432
ну экстру ты так и не пофиксил, просто в хостс ввёл запрет на вход соединение с дестрибутивом игры
там vmprotect еще навешан был, код мутировал и хуй определишь его, только структуры сампа мб сравнивать на изменения, но нужно сильно глубокую интеграцию с серваком делать
 

Leonardo

Опытный
Ивент-команда
Команда помощников
Маппер
166
53
У меня три вопроса.
1. Откуда в тебе столько впитанных знаний о внутренней структуре старого Античита. Ты злоумышленник ? Или промышлял античитом таким
2. Получается старый античит по факту нарушал правила конфиденциальности и приватности без согласия, если отправлял ряд данных пк по твоим словам. Почему ты так уверен что только данные те которые ты перечислил, может еще больше было (зачем ему название учетных записей) ?
3. Скорей судя что античит делал, могло же быть то что игра столько ресурсов хавала.
Я не удивлюсь что майнинг ферма была еще в конце.
 

wrighter

Мастер
Администратор в отставке
1 493
1 242
У меня три вопроса.
1. Откуда в тебе столько впитанных знаний о внутренней структуре старого Античита. Ты злоумышленник ? Или промышлял античитом таким
2. Получается старый античит по факту нарушал правила конфиденциальности и приватности без согласия, если отправлял ряд данных пк по твоим словам. Почему ты так уверен что только данные те которые ты перечислил, может еще больше было (зачем ему название учетных записей) ?
3. Скорей судя что античит делал, могло же быть то что игра столько ресурсов хавала.
Я не удивлюсь что майнинг ферма была еще в конце.
Сына, к Толе обращаться только на Вы и разрешите, будь добр соблюдай эти правила.
 
  • Мне нравится
Реакции: tlaugx и papaholostoi

Leonardo

Опытный
Ивент-команда
Команда помощников
Маппер
166
53
Сына, к Толе обращаться только на Вы и разрешите, будь добр соблюдай эти правила.
кто под кем ходит, античит под тобой, или античит над тобой ?
Эй, там Анатолий, ответьте мне на вопросы, я буду доволен, менять пароли пойду и историю браузера чистить.
 

Pe4en9

Новичок
4
1
У меня три вопроса.
1. Откуда в тебе столько впитанных знаний о внутренней структуре старого Античита. Ты злоумышленник ? Или промышлял античитом таким
2. Получается старый античит по факту нарушал правила конфиденциальности и приватности без согласия, если отправлял ряд данных пк по твоим словам. Почему ты так уверен что только данные те которые ты перечислил, может еще больше было (зачем ему название учетных записей) ?
3. Скорей судя что античит делал, могло же быть то что игра столько ресурсов хавала.
Я не удивлюсь что майнинг ферма была еще в конце.
То есть получается, при заходе ты соглашаешься с передачей куки файлов на сайт( те же данные), считается тоже кражей?
Индивидуальный машинный код, он есть у каждого ПК и не является секретной информацией или личной информацией.
Скачай Everest, тебе там вся инфа о пк будет.
В любом случае, бан по железу минимизирует( правда не на 100%) читерства на сервере.
 
  • Мне нравится
Реакции: tlaugx

Leonardo

Опытный
Ивент-команда
Команда помощников
Маппер
166
53
Погоди-ка, не совсем пойму тебя.
Я не имел ввиду про тот же сайт, где есть правила вроде о сборе конфиденциальности бы как при регистрации официальные.
После пункта о сборе и обработке данных, где указано четко о сборе имен учетных записей и многое другое, мне стало не по себе.
Я даже загуглил и мне выдали официальные источники о таком нарушении правил конфиденциальности. Я просто не припомню, чтобы меня уведомлял кто либо что античит какой-то столько собирает с моего пк информации, я конечно понимаю, шутки шутками, все это безобидно, в целях предотвращение читеров, ну это явно в моем понимании как нарушение конфиденциальности судя с официальных источников, Everest это когда ты собственно узнаешь о своей системе, а когда кто то узнает множество данных, даже тот же гугл говорит что риск угроз есть применимые разными способами мошенниками.
Интересно однако получается, может это только во вселенной движка античита самп такое происходит ?
 

creepncrawl

МИССИС СУПЕРПОРШЕНЬ
2 131
1 763
предлагаю на замену название CuckOk, чтобы понимать с чем имеем дело
 

Leonardo

Опытный
Ивент-команда
Команда помощников
Маппер
166
53
То есть получается, при заходе ты соглашаешься с передачей куки файлов на сайт( те же данные), считается тоже кражей?
Индивидуальный машинный код, он есть у каждого ПК и не является секретной информацией или личной информацией.
Скачай Everest, тебе там вся инфа о пк будет.
В любом случае, бан по железу минимизирует( правда не на 100%) читерства на сервере.
Я просто ввиду к тому что если смышленыш какой либо, как то эксплоит внедрит с вероятностью очень маленькой, это мои фантазии>с таким направлением античитом повлечет кражу аппаратных данных, на то есть и риск. Ну это не суть
 

ToJI9H

Профессионал
720
432
У меня три вопроса.
1. Откуда в тебе столько впитанных знаний о внутренней структуре старого Античита. Ты злоумышленник ? Или промышлял античитом таким
2. Получается старый античит по факту нарушал правила конфиденциальности и приватности без согласия, если отправлял ряд данных пк по твоим словам. Почему ты так уверен что только данные те которые ты перечислил, может еще больше было (зачем ему название учетных записей) ?
3. Скорей судя что античит делал, могло же быть то что игра столько ресурсов хавала.
Я не удивлюсь что майнинг ферма была еще в конце.
1. Перед тобой разработчик
2. Нарушал, лаунчер делает это и по сей день
3. Там была периодизация проверок, каждые 3,5,15 и так далее секунд. Максимально ресурсы ела только проверка на открытые окна в системе, но на нее был поставлен кд в 60 секунд через месяц после релиза
 

papaholostoi

C:\\users\documents\работа.exe
Куратор команды администрации
Менеджмент экономического раздела
2 217
1 857
1. Перед тобой разработчик
2. Нарушал, лаунчер делает это и по сей день
3. Там была периодизация проверок, каждые 3,5,15 и так далее секунд. Максимально ресурсы ела только проверка на открытые окна в системе, но на нее был поставлен кд в 60 секунд через месяц после релиза
Легенда, сделал мне золотой юцп до того как это стало мейнстримом. Ты заходи к нам почаще.
 

papaholostoi

C:\\users\documents\работа.exe
Куратор команды администрации
Менеджмент экономического раздела
2 217
1 857
Эту, он теперь ещё у кого-то кроме нас с тобой?
Вроде как у 4 человек, я, ты, какой то ХОХ на 2/3 сессии ( может быть антошкин), и еще кто-то, мне говорили что как раз перед тем как отключили эту тему, кто то успел получить. Посмотреть бы как-то.
 

potop

+79605613461
Ивент-команда
489
706
ну да толян справедливости ради античит спустя недели настройки всё же нас победил. но оказался глоку не по карману, как я понял