АнтиЧиты. Статья № 2. Написание Анти-Чита. Часть 1 [Введение]

Пользователь
Статус
Оффлайн
Регистрация
22 Июл 2014
Сообщения
121
Реакции[?]
51
Поинты[?]
0
Здравствуйте, уважаемые пользователи. После огромного перерыва, продолжаю цикл статей о защите | обходу защиты в онлайн играх. Сегодня, в данной статье, мы поговорим о Анти-Чите для вашего проекта (вводная статья, без кода. Код будет в 3ей статье) {Нейронка будет позднее, в несколько статей}

Для начала разберемся, какие функции должен выполнять Анти-Чит [ТЗ] :

· Отслеживание запуска процесса игры, вместе с клиентской частью анти-чита [Иначе, убиваем процесс игры];
· Регистрация пользователя в базе анти-чита.
· Защита от изменения и подмены игровых файлов, сверка файлов игры с white-листом на сервере, по хеш-сумме. [Выдаем предупреждение, убиваем игровой процесс | Блокировка на время\пермач]
· Проверка сторонних файлов в папке игрового клиента, перед запуском игры. [Чистим папку от мусора]
· Защита от внедрения и изменения процесса игры
· Скрытие игрового процесса от ДЗ и его разновидностей
· Нахождение и выгрузка запрещенных утилит: Редакторы памяти / Перехватчики пакетов / Дебагеры / и т.д
· Снятия снимков экрана у игроков
· Сканирование реестра, для проверки наличия inject’а через реестр
· Отслеживание вводимых слов/выражений, сверка их с базой. [При совпадении – отправляем скриншот на сервер, оповещаем администратора]
· Сверять внедряемые dll / запущенные приложения, с базой АЧ, для выявления запрещенного софта
· Зачаток эвристики. {Отдельной статьей}
· Сокрытие работы АЧ в системе [Скрытие процесса, внедрение dll’ки в системные файлы и т.д]

При этом всем, необходимо, чтобы софт не отлетал от АВ программ, ибо за некоторые функции, АВ может распознать наш АЧ, как зловред.

Для начала разберемся со способом блокировки. Самый хороший вариант, когда у игры есть свой лаунчер, который собирает данные с ПК (проц/видеокарта/серийник Win/Серийник Харда/Серийник процессора/МАК сетевухи), шифрует и объединяет в одну сточку, и эта сточка вносится в white-лист лаунчера, что дает пользователю право, на запуск игры.

Пример:
Человек регистрируется через администратора / совершает покупку игры -> при первом запуске собирается вся информация, необходимая лаунчеру -> выполняется привязка игры к ПК.

Нюансы и способы решения:

Челик меняет какую-либо запчасть ПК/переустанавливает Win -> слет привязки.
В таком случае, для лаунчера необходима возможность вести логи по аутентификации игрока в сети, с показом всего железа пользователя, по отдельности + общий ключ, выданный при первом запуске. Далее,

А) Тех. Поддержка сверяет данные с базой, если данные + ключ находятся еще в white-листе (не ушли в black-лист АЧ), то выполняем перевязку на другое железо.

Б) На сайте игры, пользователь заходит на специальную страницу, с перевязкой игры на другое железо [надо учесть, что в таком случае, акк могут спиздить, увести у реального владельца), вводит данные [как вариант, в лаунчере выводить зашифрованные характеристики ПК, дабы не было догадок, что используется для привязки к ПК. К примеру, ХХХ-YYY-ZZZ-GGG-JJJ, где XXX, YYY, ZZZ, GGG, JJJ – сведенья о ПК, зашифрованные по какому-либо алгоритму), после чего, на самом сервере, производится автоматическая проверка по базам, после оформляется новая привязка.

Второй вариант блокировки – примитивный, данные ПК заносятся сразу в black-лист, после блокировки.

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

Третий способ встретился мне в 14-15 году, в одной из пираток DayZ.
Разработчик лаунчера сделал следующее:
При блокировке в игре, лаунчер делал 2 вещи:

1) Заносил запись в реестре, которую потом проверял при запуске. Если нашел – человек был забанен на проекте.

2) Первый способ он посчитал примитивным, так как понял, что большинство школяров, уже в то время, знали, как зайти в реестр, нажать Ctrl + F, воспользоваться поиском. Он добавил еще и создание лаунчером специального файлика, в системе, с блокировкой по такому же принципу, что и в первом случае. (есть файл – есть блокировка) Зарывал, конечно, он его хорошо в системе. Но, если ты знаешь, что такое песочница, то ты уже нашел решение для этой проблемы (Вопрос: Как думаете, как решился вопрос с разблокировкой?)

Позже уже, я присоединился к проекту, указав разработчику на все дыры его лаунчера, показав ему обход второго способа. Создал первую версию анти-чита, которую год никто не мог обойти, из разработчиков читов для приваток. Позже, усилили защиту проекта, путем проверки статуса запуска АЧ + игры, на стороне сервера, с помощью сверки GUID’ов, предоставляемых АЧ/лаунчером с серверными данными. Ну а до нейронки, проект не дожил, к сожалению. Написанием нейронки я уже занялся в 17 году, так как писал курсовую во этой теме :kappa:

В следующей статье займемся написанием самого анти-чита, со всем функционалом, который описан в ТЗ этой темы. Так же можете предложить свои мысли, по функциям, которые могут быть необходимы, в современном Анти-Чите:Jebaited:
 
Начинающий
Статус
Оффлайн
Регистрация
4 Мар 2017
Сообщения
89
Реакции[?]
11
Поинты[?]
0
Чел напиши тоже самое на почту вальве,может научатся с читерами бороться)
 
Сверху Снизу