Переход с Protector4J v5 на v6

⚠️ В целях безопасности вашего кода рекомендуем как можно скорее перейти на v6

Реверс-инжиниринг с помощью ИИ быстро снижает порог для анализа кода. Уровень защиты v5 уже недостаточен для текущих угроз, и дальнейшее его использование повышает риск раскрытия кода. Настоятельно рекомендуем как можно скорее перевести защищённые приложения на Protector4J v6.

1. Зачем переходить на v6

Инструменты искусственного интеллекта упрощают анализ кода и реверс-инжиниринг. Традиционной обфускации байт-кода и простого шифрования уже недостаточно для современных угроз безопасности.

Чтобы усилить защиту Java-кода, мы полностью переработали Protector4J v6. Новая архитектура P4JX включает более ста мер безопасности на уровнях шифрования кода, загрузки классов, проверки среды выполнения, защиты от отладки и других механизмов. Даже с современными средствами анализа на основе ИИ обратный анализ защищённого кода остаётся крайне сложной задачей.

Поэтому v6 существенно отличается от v5 архитектурой защиты, настройкой, синтаксисом командной строки и форматом выходных данных.

2. Основные различия между v5 и v6

Областьv5v6
Архитектура защитыИспользует формат шифрования и среду выполнения v5Использует новую архитектуру P4JX и настроенную VLX JRE
Уровень защитыРассчитан на традиционные инструменты реверс-инжинирингаБолее ста мер безопасности, включая защиту от реверс-инжиниринга с помощью ИИ
НастройкаМеньше параметров, основная настройка через файлы заданийБольше параметров защиты и режим совместимости для простой настройки
Командная строкаp4j -t <type> -f <task.yml>p4j <command> <input> <output> [options]
Файлы конфигурацииИспользует YAML-файлы заданий v5Файлы v5 больше не принимаются; v6 может работать только с аргументами командной строки
Выпуск и обновлениеОтдельные файлы можно обновлять с помощью KeySeed и onlyEncryptJarFilesПовторно создавайте и публикуйте весь каталог вывода целиком

Самое важное изменение: зашифрованные файлы, среды выполнения и YAML-файлы заданий v5 нельзя напрямую использовать в v6.

3. Простая настройка в режиме совместимости

Для усиленной защиты требуется больше параметров: область защиты, среда выполнения, компоновка, совместимость и целевые платформы. Чтобы пользователю не приходилось разбираться во всех параметрах до начала работы, v6 предоставляет режим совместимости.

В графическом интерфейсе используйте режим Simple (рекомендуется):

  1. Выберите тип приложения.
  2. Выберите исходный JAR- или WAR-файл.
  3. Выберите версию Java и целевые платформы.
  4. Позвольте Protector4J проверить приложение и автоматически выбрать консервативные параметры совместимости.
  5. Подтвердите каталог вывода и запустите защиту.

Переходите в режим Advanced только тогда, когда требуется точно настроить область защиты, компоновку Spring Boot, параметры JVM, JavaFX или другие настройки.

В командной строке используйте --compat-apply. Этот параметр проверяет приложение, применяет консервативные рекомендации по совместимости, а затем создаёт защищённый пакет:

p4j javaapp app.jar dist --compat-apply

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

4. Синтаксис командной строки полностью изменён

CLI v5 зависит от YAML-файла задания:

p4j -t java -f java-task.yml

v6 может работать без файла конфигурации и принимать все настройки в виде аргументов командной строки:

# Обычное Java-приложение
p4j javaapp app.jar dist --compat-apply

# Приложение Spring Boot
p4j springboot app.jar dist --compat-apply

# Tomcat WAR
p4j tomcat app.war dist --compat-apply --context /app

# Java-библиотека
p4j encode library.jar library.p4jx

Соответствие типов приложений:

Тип v5Команда v6
javajavaapp
spring-bootspringboot
tomcattomcat
java-libencode

Обратите внимание: команда encode в v6 защищает все классы библиотеки, а для их загрузки требуется VLX JRE. Это не равноценная замена механизма v5, который преобразовывал выбранные методы в нативный код и позволял продолжать использовать стандартную JRE.

v6 по-прежнему поддерживает файлы заданий, но необходимо заново экспортировать p4j-task.yml из графического интерфейса v6:

p4j --task-file p4j-task.yml

Не пытайтесь изменить и повторно использовать YAML-файл v5. Форматы заданий v5 и v6 несовместимы. Настройте задание заново в графическом интерфейсе или перепишите команду по актуальной документации CLI.

Все команды и параметры описаны в справочнике CLI v6.

5. Переход с v5 на v6

Следуйте единому процессу перехода:

Сохранить резервную копию v5 → найти исходный JAR/WAR → создать пакет в режиме совместимости v6 → проверить → переключиться

Шаг 1. Сохраните среду v5

Сохраните рабочий каталог вывода v5 и процедуру запуска, чтобы при необходимости можно было выполнить откат. Не перезаписывайте каталог v5.

Шаг 2. Подготовьте исходные данные

Найдите исходный JAR, Spring Boot JAR или WAR, который не был зашифрован с помощью v5. Каталог vlxlib, зашифрованные JAR-файлы и vlxjre, созданные v5, нельзя использовать как входные данные v6.

Шаг 3. Создайте пакет заново в v6

Для интерактивной работы начните с режима Simple в графическом интерфейсе. Для автоматизации используйте аргументы командной строки вместе с --compat-apply. Записывайте результат в новый каталог и не смешивайте его с файлами v5.

Шаг 4. Проверьте результат v6

Запустите приложение с помощью созданного файла run.sh, run.command или run.bat. Публикуйте созданную vlxjre вместе с приложением. Не заменяйте её системной JRE или средой выполнения из другого задания.

Как минимум проверьте следующее:

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

Шаг 5. Переключите весь пакет

После проверки переключитесь на весь каталог вывода v6. Для последующих обновлений также создавайте полный пакет заново из исходного JAR- или WAR-файла вместо частичного обновления v5 KeySeed + onlyEncryptJarFiles.

6. Рекомендация по обновлению

Реверс-инжиниринг с помощью ИИ быстро снижает порог для анализа кода. Продолжение использования v5 повышает риск раскрытия кода. Из соображений безопасности мы рекомендуем перейти с v5 на v6 как можно скорее.

Выполняйте переход параллельно: сохраните v5 для возможного отката, создайте новый пакет в режиме совместимости v6, проверьте его и только после этого переключите производственную среду.

Связанная документация: