Защита Java-библиотеки

Защита Java-библиотеки с помощью графического инструмента

Перейдите в папку Protector4J, запустите p4j-ui[.exe], и вы увидите следующий пользовательский интерфейс.

image-20241222183944773

Для пользователей macOS просто дважды щёлкните на Protector4J.app, как на обычное Mac-приложение.

Вход в систему

Если вы уже приобрели лицензию, нажмите на кнопку входа в правом верхнем углу и введите данные пользователя. Если у вас нет лицензии, вы всё равно можете попробовать этот инструмент.

Функция защиты Java-библиотек требует редакцию Enterprise.

Выбор типа приложения

Нажмите на кнопку «Java Library» на странице выбора типа приложения.

Выберите jar/war-файлы для шифрования

Выберите jar/war-файлы, которые вы хотите зашифровать — можно выбрать один или несколько файлов.

Указание метода шифрования

На этой странице вы можете выбрать метод шифрования.

image-20241222111100288

Вы можете выбрать классы и методы, которые нужно защитить, из структуры каталогов справа, или вручную ввести элементы, которые нужно защитить, в следующем формате:

# Protect a method
# Class name.method name&method signature
Hello.hello&()V
# Protect all methods under the class
# Directly input the class name
Hello

Вы можете ввести элементы для исключения в поле «Items to exclude», используя тот же формат.

Защита Java-библиотеки с помощью инструмента командной строки

Конфигурационный файл

Инструменту командной строки необходимо указать файл задачи в качестве параметра.

Перейдите в папку protector4j/task-templates, найдите java-lib-task.yml, скопируйте и отредактируйте его.

# The jar files that need to be encrypted
jarFiles: []

# Protect a method: MethodName&MethodSignature, like io.test.Hello.hello&()V
# Protect all methods in a Class: ClassName, like io.test.Hello
itemsToProtect: []

# Exclude items that are not encrypted in the same format as itemsToProtect.
itemsToExclude: []


# The output folder
outputFolder: ''

# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true

Выполнение задачи шифрования

Перейдите в папку Protector4J и выполните следующую команду.

Linux или macOS

Для пользователей macOS инструмент командной строки находится в /Applictions/Protector4J.app/Contents/protector4j-mac.

./p4j -t java-lib -f path-of-task-file -u email -p password

Windows

p4j -t java-lib -f path-of-task-file -u email -p password

Выполните p4j --help для просмотра подробных параметров.

Результат шифрования

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

До шифрования

image-20250204115631030

После шифрования

image-20250204115731661

После завершения шифрования метод Main преобразуется в нативный метод.

Ограничения

  1. Не поддерживает блоки try-catch.
  2. Не поддерживает jar-файлы, упакованные Spring Boot.
  3. Не поддерживает war-файлы.

Демо-приложение

В настоящее время функция шифрования Java-библиотеки недоступна для бесплатной пробной версии. Вы можете скачать это демо-приложение, чтобы увидеть эффект шифрования Java-библиотеки. Это программа на swing — вы можете запустить её командой java -jar swingapp.jar. Её основная функция преобразована в нативный метод — вы можете проверить это с помощью инструмента декомпиляции!

Незашифрованное приложение

swing-plain.jar

Зашифрованное приложение

swing-encrypted.jar