Skip to content

microwin7/GravitGuard

 
 

Repository files navigation

GravitGuard Pro

Этот проект не претендует на 100%'ную защиту, однако является хорошим шаблоном для создания вашей собственной защиты
Проект предоставляется "как есть" без гарантий защиты от конкретных читов, отсутствия крашей и совместимости
Трижды подумайте стоит ли устанавливать защиту если у вас в команде нет компетентных специалистов, которые смогут решить возникшие проблемы

Сборка

  • Установите Visual Studio 2019 и JDK
  • Установите переменную окружения JAVA_HOME с указанием пути до вашей JDK
  • Откройте проект в Visual Studio и настройте конфиг в Config.h
  • Выберите ReleaseStatic и x86. Выполните сборку. После чего измените архитектуру на x64 и повторите сборку.
  • Неподписанные билды будут лежать в ReleaseStatic для x86 и x64/ReleaseStatic для x64.
  • Рекомедуется подписать exe и dll файлы для минимизации ложноположительных срабатываний. Самоподписанные сертификаты тоже подойдут, если они грамотно составлены

Установка

  • Скопируйте wrapper(32/64).exe и AntiInject(64/32).dll в папку guard лаунчесрвера. Укажите guardType wrapper. Перезапустите лаунчсервер и сделайте билд

База знаний

  • Проблема: Масштабирование окна майнкрафта на Windows на экранах с высоким DPI
    Решение: укажите поддержку высокого DPI в манифесте wrapper(Свойства->Инструмент манифеста->Ввод и вывод->Поддержка DPI) (уже сделано мной)
  • Проблема: Низкий FPS на ноутбуках с NVIDIA Optimus
    Решение: В панели управления NVIDIA укажите файлу wrapper'a дискретную видеокарту по умолчанию
  • Проблема: Краш при использовании оверлея NVIDIA Experience (не подтверждено)
    Решение: Выключить оверлей NVIDIA Experience(по умолчанию выключен)

Как вернуть функционал лицензий

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

  • Вам понадобится скачать репозиторий libsodium и собрать его под Windows
  • Добавьте путь к папки с .h файлами libsodium в "Включаемые каталоги"(раздел Ктаталоги VC++)
  • Добавьте путь к папкам с библиотекой libsodium в "Каталоги библиотек"(раздел Ктаталоги VC++)
  • Добавьте зависимости от libsodium в Компоновщик->Ввод->Дополнительные зависимости
  • Раскомментируйте закомментированные строки в LicenseChecker.cpp и GravitGuard.cpp
  • С помощью своей утилиты или стандартного средства libsodium создайте первую пару ключей. Это будут мастер ключи для подписи лицензий
  • Отдельно создайте еще одну пару ключей. Это будут ключи под конкретный проект.
  • Укажите публичную часть мастер ключа в LicenseChecker.cpp (вручную, побайтово в HEX)
  • Сгерерируйте лицензию для себя с помощью LicenseGenerator
  • Установите в launcher-modules модуль защиты, который будет передавать при запуске переменную окружения GUARD_SIGNATURE
  • Сформируйте GUARD_SIGNATURE путем подписи с помощью своей утилиты или libsodium "ключа сборки" который находится в LicenseChecker.cpp и поставляется с билдом.

Как работает лицензия

Всё что написано дальше относится только к разработчикам своей защиты, которые хотят её защитить от кражи и установки на чужие проекты
Лицензия состоит из заголовка, названия проекта, публичного ключа проекта и подписи ed25519 Википедия. Отзыва лицензии не предусмотрено
Подпись гарантирует, что лицензия была выдана тем, кто владеет мастер ключем для генерации лицензии, а так же связывает публичный ключ проекта с его названием.
Лицензия находится в папке с dll и exe и является публичной(любой игрок может её прочесть)

  • Первый шаг - валидация лицензии. Если лицензия валидна, т.е. имеет правильный формат и корректную подпись она запоминается в памяти
  • Второй шаг - проверка названия запускаемого файла. Он должен иметь формат ProjectName(32/64).exe
  • Третий шаг - проверка переменной окружения GUARD_SIGNATURE. В ней должна содержаться корректная подпись "ключа сборки", подписанное ключем проекта
  • Ключ сборки - находится внутри dll и не должен быть известен третьим лицам.

Как проекты получают лицензию

Всё что написано дальше относится только к разработчикам своей защиты, которые хотят её защитить от кражи и установки на чужие проекты

  • Администратор проекта projectName с помощью утилиты создает пару ключей - публичный и приватный ключ проекта. Приватный держит в тайне, а публичный отправляет автору защиты, у которого есть мастер ключ
  • Автор защиты с помощью LicenseGenerator и своего приватного мастер ключа формирует файл лицензии и отправляет его администратору проекта вместе с билдом и "ключем билда"
  • Администратор проекта после получения билда подписывает с помощью утилиты "ключ билда" своим приватным ключем проекта, а полученную подпись вставляет в конфиг модуля(которая станет переменной окружения GUARD_SIGNATURE при запуске)

About

AntiInject dll and wrapper for Java

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 62.1%
  • C++ 37.9%