TinyPlay, Inc.
250 000
Программное обеспечение
США, Middletown
Июль 2024
Основной задачей была совместная с клиентом разработка (ко-девелопмент) системы защиты для игр клиента, а также его партнеров, которую в дальнейшем мы разместили в Open-Source и добавили базовую безопасность еще более чем для 100 различных проектов.
Основные критерии для разработки:
- Быстрая интеграция в проекты на базе Unity;
- Высокая скорость работы, маленький размер библиотеки;
- Защита памяти на клиенте;
- Защита от основных чит-схем и внедрения зависимостей;
- Предоставление базового API для отчетности;
В рамках проекта было проведено исследование по основным инструментам, используемым для клиентского взлома игр, чтобы понять какие наиболее уязвимые точки мы должны закрывать. Естественно - мы, как и клиент, понимали, что это не гарантирует 100% защиту, однако снижает количество взломов, а значит повышает устойчивость простых игр.
При работе над проектом мы выделили основные этапы работы:
- Проведение RND;
- Разработка основного функционала (защита памяти, защита от инъекций в приложение);
- Разработка модулей защиты от основных взломов (speedhack, wallhack, teleport, перемотка времени и др.);
- Разработка вспомогательных модулей (внутриигровая капча, отправка отчетов, системы ложных срабатываний);
- Тестирование на небольших проектах, которые вышли в soft-launch;
- Внедрение в большие проекты;
На данном этапе мы собрали данные о популярных методах взлома внутри проектов клиента, а также провели исследование среди 10-ти компаний-партнеров, так же занимающихся разработкой игр. Самые основные методы взлома были зафиксированы и отсортированы по методу критического пути, как самые важные при работе с защитой.
Список получился таким (по критичности и значимости):
- Прямой взлом памяти через Cheat Engine и аналоги;
- Взлом через подмену (внедрение) зависимостей (assembly);
- Спидхаки и перемотка времени;
- Wallhack и телепорт-модули;
После чего мы приступили к разработке основного функционала. Ядро системы включает в себя узел управления модулями + подключаемые модули внутри игры, каждый из которых включает в себя событие о срабатывании подозрения на читерство.
Самые важные модули - модули защиты памяти и защиты от внедрения зависимостей.
Первый модуль работает по принципу хранения двух значений - реальное и зашифрованное. При попытке взлома реального значения (например денег), игра понимает, что новое значение было подставлено напрямую без работы с шифрованием - и выдает срабатывание.
Второй модуль хранит в себе список изначальных assembly и их параметров (хэш-суммы и пр.), и если при запуске или работе игры он замечает изменения в этих скомпилированных классах - значит кто-то извне пытался изменить их работу.
Далее мы начали дорабатывать систему, внедряя дополнительные модули в наш продукт - сюда вошло около 10-ти различных модулей, каждый из которых может быть включен / исключен из проекта одним кликом на стадии разработки.
Мы создали следующие модули в дополнение к основным:
- Большое количество библиотек хэширования и шифрования (AES, DES, xxHash, MD5, SHA, RSA и пр.);
- Сериализатор сохранений с шифрованием;
- Защита от перемотки времени (сравнивает локальное время с веб);
- Защита от спидхака (считает реальные тики процессора и тики игры);
- Отправка шифрованных веб-реквестов;
- API для отчетов о читерстве;
- Защита от телепортов и Wallhack;
- Внутреигровая капча;
Последним этапом было тестирование и внедрение в основные продукты TinyPlay. После того, как все тесты прошли успешно - мы совместным решением вывели продукт в Open-Source, и теперь он используется еще в более чем 100 различных проектах.
После сбора аналитических данных по истечению 4-х месяцев мы получили следующий результат:
- Решение используется в более чем 100 проектах;
- Пресечено более 40,000 попыток взлома;
- Снизили нагрузку на отдел модерирования (фрауд) в реалтайм играх на Photon в 3 раза;
- Сэкономили бюджет клиентам на внедрение Server-Side защиты там, где это не нужно на 80%;
Neurosell с удовольствием обсудит вашу задачу