Защита java приложений от реинженеринга / Native Classloader / NLaunch

HomaPlus

Пользователь
Сообщения
622
Решения
13
Веб-сайт
github.com
NLaunch - Библиотека для безопасной загрузки классов в java из защищенного формата .lar

Как это работает?

Для java-приложения
1) Ты пишешь java приложение
2) Собираешь его в .jar - архив
3) Получаешь сертификат формата PEM (сделаю сам, или в скриптах сборки можно сгенерировать свой)
4) Запрашиваешь у меня перекомпиляцию нативных библиотек под твой сертификат
(при необходимости можно настроить получение сертификата извне)
(исходный код модулей криптографии дать на руки могу только при особых условиях сотрудничества)
5) Запускаешь скрипты сборки
6) Запускаешь nlaunch.jar, указав в -Dnlaunch.lars=!%путь-к-lar-пакету%
7) Все запускается
Для minecraft-сборки (или 1-го мода)
5) Запускаешь minecraft с полным(и) модом(и), через nlaunch.jar ,,в режиме агента,, и некоторое время
играешь и активно используешь различные функции мода (статический агент в разработке)
все что было использовано - во время работы агента - попадет в .lar часть мода
6) Запускаешь скрипты сборки, в параметрах указав главный класс(ы), (а так же те, которые не нужно включать в .lar)
7) Помещаешь получившийся (урезанный) .jar в папку модов, вместо оригинального и указываешь путь к получившейся .lar-части
8) Майнкрафт запускается

Почему именно так?
Загрузчик модов Minecraft, считывает байты из jar-архива, который откроет любой декомпилятор
Принцип работы NLaunch - ,,прямая,, загрузка классов сразу в jvm. Т.е из java получить данные не возможно. Единственный вариант
получить исходные данные классов - распотрошить машинный код модуля криптографии


Скорость работы
Небольшие оптимизации реализации NLaunch для Forge - компенсируют те 20ms, которые уйдут на расшифровку классов внутри оперативной памяти

Кому это подойдет?
Тому, кому есть что защищать на стороне конечного потребителя
Подойдет для защиты сборок с модами, конкретных модов, плагинов, и других java-приложений
(Например, вы автор плагинов, и вы не хотите, чтобы кто-то смотрел ваш код через декомпилятор)
Повторюсь: Nlaunch совместим с любыми java приложениями. Даже с сайтом на Spring, или сервером Spigot.


В комплекте с NLaunch предоставляю
1) Саму библиотеку (nlaunch.jar), исходники и систему сборки lar-архивов
2) Сборку модуля криптографии под windows/linux x64
3) Модифицированные библиотеки minecraft/forge для правильной интеграции
4) Техподдержку актуальной версии NLaunch


Связь
Желательно почта Te4hnoPublic@yandex.ru

На данный момент реализована и протестирована поддержка windows-x64 / linux-x64 + Minecraft Forge 1.12.X-2860
Поддержка других версий minecraft, дополнительная комплектация, цена, и прочие тонкости сотрудничества - обсуждаются лично
(просьба писать на почту, на личные сообщения форума могу не ответить. Для тех, кто готов предложить меньше 5к - просьба не засорять почту)
 
Последнее редактирование:
Например, вы автор плагинов, и вы не хотите, чтобы кто-то смотрел ваш код через декомпилятор
Так, а каким образом конечный потребитель запустит один-единственный плагин, который теперь в lar формате, если весь остальной сервер - нет?
 
Последнее редактирование:
Так, а каким образом конечный потребитель запустит один-единственный плагин, который теперь в lar формате, если весь остальной плагин - нет?
Достаточно подключить NLaunch к проекту любым способом, закинуть плагин в папку с плагинами и подключить lar-архив (Пункт 6, для Java-приложений),
Так же можно включить NLaunch в свой плагин, и загрузить lar-пакет вручную (через специальное, очень простое API, Комплектация, пункт 1).
После чего, все классы внутри lar, будут доступны для использования внутри JVM. (Т.е на них можно будет сослаться обычным импортом)

Nlaunch нисколько не влияет на логику работы приложения. Т.е - как были плагины в в папке с плагинами в формате .jar - так они и продолжат работать.

Так же (при желании) можно сконвертировать уже само ядро, или его части в .lar (Комплектация, пункт 1), и точно так же загрузить
 
Это как-то скажеться на производительности?
Скорость работы
Небольшие оптимизации реализации NLaunch для Forge - компенсируют те 20ms, которые уйдут на расшифровку классов внутри оперативной памяти
Лишь незначительно увеличит время запуска серверов. Nlaunch так же поддерживает потоковую загрузку .lar-пакетов

Сервера, которые используют моды, основанные на преобразовании бай-кода перед загрузкой (как например Forge и Fabric) будут иметь эквивалентную скорость запуска, за счет заранее выполненных преобразований агентом (Для МС-сборки, пункт 5)

NLaunch загружает в jvm именно тот байткод, который ты скомпилировал, так что в рантайме производительность не изменится
Объединено

Выложил на гит демонстрационную версию приложения, защищенного Nlaunch

 
Последнее редактирование:
Назад
Сверху Снизу