Giter Site home page Giter Site logo

gravitguard's Introduction

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 при запуске)

gravitguard's People

Contributors

gravit0 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.