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

Команда Library Encryption соответствует низкоуровневой команде encode; она генерирует лишь один защищённый архив, не копирует компоненты времени выполнения и не создаёт скрипты запуска приложения.

1. Работа с интерфейсом GUI

  1. На странице типа приложения выберите Library Encryption. Если требуется пакет для непосредственного запуска, следует выбрать Java Application, Spring Boot или Tomcat WAR.

    Выбор шифрования библиотеки

  2. Выберите исходный JAR, версию Java, совместимую с реальной средой загрузки, и целевую платформу, затем выберите простой или расширенный режим. В выходной библиотеке отсутствуют элементы vlxjre, но эти параметры всё равно используются для определения идентичности времени выполнения архива; не следует смешивать результаты для разных платформ с целью уменьшения количества файлов.

    Выберите JAR-файл библиотеки, версию Java, целевую платформу и режим работы

  3. В простом режиме происходит сканирование исходного JAR с автоматическим применением рекомендаций сканера ZIP overlay и суффиксов архивов, поддерживаемых функцией Library Encryption. Все элементы .class в исходном JAR всё равно шифруются, в то время как остальные ресурсы остаются незашифрованными.

  4. В расширенном режиме параметры можно настраивать по необходимости:

    • Disable JIT for protected methods: позволяет выполнять защищённые методы только в интерпретаторе;
    • Append scanner ZIP overlay: предоставляет публичные ресурсы и заглушки метаданных инструментам, которые напрямую анализируют центральный каталог ZIP;
    • Compatibility scan…: сканирование рисков совместимости, связанных с доступом к ZIP, предположениями относительно расширений файлов, JNI/нативными классами и чтением байт-кода во время выполнения.
  5. На странице вывода выбирается полное имя файла вывода, обычно с использованием .p4jx; .jar используется только тогда, когда интегрируемая программа жёстко задаёт расширение .jar. Рекомендации по выбору или сканированию на странице «Расширенные настройки» с использованием Archive suffix синхронизируют расширения .p4jx/.jar для выбранных файлов. Проверьте версию Java, целевую платформу, JIT, настройки scanner overlay, затем нажмите Run protection.

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

2. Сферы применения

  • Защита собственных JAR-файлов, являющихся частью других контролируемых приложений P4JX;
  • Загрузка архива P4JX с помощью существующего запускача;
  • Требуется самостоятельное управление полным каталогом доставки для сложных интеграций.

Если целью является обычное приложение, готовое к запуску, Spring Boot или Tomcat, используйте соответствующие команды пакетирования.

3. Основные команды

p4j encode library.jar library.p4jx

Можно также использовать сокращения:

p4j library.jar library.p4jx

encode записывает полное имя файла вывода, предоставленное пользователем; поэтому оба приведенных ниже варианта находятся в формате P4JX:

p4j encode library.jar library.p4jx
p4j encode library.jar library.jar

4. ZIP overlay

p4j encode library.jar library.p4jx \
  --zip-overlay scanner

overlay содержит только публичные ресурсы, каталоги и метаданные-шаблоны для совместимости с инструментами, способными напрямую анализировать центральный каталог ZIP. Он не раскрывает реальных методов защиты и не превращает P4JX в обычный JAR.

5. Требования к времени выполнения

Нижний уровень encode не генерирует vlxjre; пользователь обязан использовать среду выполнения VLX, совместимую с идентификатором, использованным при кодировании. Не следует:

  • Загружать с помощью обычного OpenJDK/Oracle JDK;
  • Копировать lib/modules или библиотеки типа native из архива другой версии;
  • Смешивать среды выполнения для разных целевых платформ, линий сборки JDK или задач кодирования с архивом.

Для обычных проектов предпочтительно использовать команды высокого уровня для автоматического поддержания этих связей.

6. Разрешение

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