История изменений

6.0.9 2026-07-25

Исправление сбоя для зашифрованных приложений, выводящих NullPointerException

  • Исправлен сбой JVM, который мог происходить, когда защищённый метод выбрасывал неявное NullPointerException, а приложение читало его сообщение или выводило трассировку стека. Функция «полезных сведений об NPE» среды выполнения пыталась восстановить текст "because ... is null" из зашифрованного байт-кода метода, обращалась к недопустимой памяти и приводила к сбою VM (наблюдалось в приложениях JavaFX FXML). Защищённые методы теперь пропускают подробное сообщение и возвращают стандартное NullPointerException; тип исключения, трассировка стека и любое сообщение, заданное приложением, не затрагиваются.
  • Среды выполнения для JDK 17, 21 и 25 пересобраны до VLX 1.0.16 с этим исправлением. JDK 11 не затронут, так как функция полезных сведений об NPE отсутствует до JDK 14, и остаётся на VLX 1.0.15; JDK 8 остаётся на VLX 1.0.11.

6.0.8 2026-07-24

Загружаемые по требованию среды Tomcat и безопасные настройки по умолчанию для рабочей среды

  • Исправлена ошибка, из-за которой опубликованный самозащищённый кодировщик не мог упаковывать Tomcat WAR: классы Tomcat внутри app.p4jx больше не были видны как физический JAR в пути классов. Tomcat 9.0.107 и 10.1.53 теперь поставляются как неизменяемые версионированные артефакты R2/COS, выбираются по пространству имён Servlet, загружаются при первом использовании, сохраняются в локальном кэше и проверяются по точному SHA-256 и списку JAR. Изменённый кэш удаляется и загружается заново.
  • Публичные JAR из WEB-INF/lib теперь размещаются как отдельные для каждого приложения физические веб-ресурсы, привязанные по хэшу. Это устраняет повторное чтение и проверку вложенного архива для каждого класса при запуске Spring.
  • Новые сборки теперь по умолчанию используют рабочую конечную точку лицензирования https://protector4j.com. Внутренняя конечная точка http://10.10.10.16:16002 используется только при явном выборе P4JX_LICENSE_MODE=dev или -PlicenseMode=dev.

6.0.7 2026-07-24

Вложенные зависимости Tomcat и доверенные динамические классы

  • Исправлены сбои защищённых Tomcat WAR при загрузке классов или сервисов из WEB-INF/lib/*.jar. Теперь Protector4J запечатывает в app.p4jx точные метаданные SHA-256 вложенных JAR и классов; неизвестные, подменённые или изменённые зависимости по-прежнему отклоняются.
  • Исправлены сбои Spring CGLIB и Hibernate Byte Buddy в JDK 11, вызванные тем, что MethodHandles.Lookup#defineClass использует специальный для JDK 11 маркер источника. Динамическое доверие по-прежнему требует проверенного VM происхождения вызывающего класса или загрузчика; строки маркеров, имена классов, пути, пакеты и CodeSource не предоставляют доверия.
  • Опубликованы среды выполнения VLX 1.0.15 для JDK 11, 17, 21 и 25 в 24 поддерживаемых платформенных комбинациях. Все они прошли строгие проверки L1-L5, включая реальный FXML, Swing/AWT, загрузку вложенных зависимостей Tomcat, а также негативные сценарии происхождения и изменения. JDK 8 остаётся на VLX 1.0.11.

6.0.6 2026-07-22

Надёжное происхождение определения классов

  • Исправлены сбои запуска защищённых JavaFX FXML-приложений: MethodUtil определяет вспомогательный класс Trampoline, происхождение которого проверено VM, через defineClass(byte[]). Доверие теперь передаётся только от проверенного VM происхождения класса или загрузчика, а не от имён классов, путей, пакетов или строк CodeSource.
  • Добавлено реальное покрытие FXML с fx:controller, элементами свойств, внедрением Controller и запуском WebView, а также регрессионные проверки для доверенных динамических определений, двухуровневой передачи, неизвестных источников, неразрешённых JAR и подмены имён protected class.
  • Опубликованы среды выполнения VLX 1.0.14 для JDK 11, 17, 21 и 25. JDK 8 остаётся на VLX 1.0.11.

6.0.5 2026-07-21

Целостность нативной среды выполнения JavaFX

  • Устранены сбои запуска JavaFX WebView в Windows (Graphics Device initialization failed / No toolkit found): упакованные DLL-файлы JavaFX размещены в vlxjre/bin, а поиск нативных библиотек в средстве запуска приведён в соответствие.
  • Зашифрованный список разрешений в app.p4jx расширен на внешние нативные библиотеки. Файлы JavaFX должны соответствовать точным значениям SHA-256 независимо от пути, а Glass повторно проверяет фактически загруженный файл; неизвестные или изменённые файлы отклоняются.
  • Опубликованы обновлённые среды выполнения Protector4J для JDK 11, 17, 21 и 25. Поддерживаемые платформенные комбинации JavaFX прошли L5.1-L5.4, включая запуск WebView и отклонение изменённых модулей JAR, jdk.jsobject и нативных библиотек Glass.

6.0.4 2026-07-21

Целостность внешних модулей и совместимость среды выполнения JavaFX

  • Устранено доверие к внешним модулям на основе пути. Теперь каждый JAR внешнего модуля должен точно соответствовать записи SHA-256 из списка разрешений, встроенного в app.p4jx; нераспознанные или изменённые файлы отклоняются независимо от их местоположения.
  • Добавлены автоматическое определение замыкания зависимостей на основе JavaFX module-info.class и контролируемый допуск закреплённых модулей JavaFX и JDK, включая javafx.media и jdk.jsobject.
  • В новых средах выполнения P4JX исправлены проблемы запуска JavaFX WebView и ошибки E818 / ClassFormatError после создания загрузочного слоя во всех поддерживаемых версиях JDK и на всех платформах.

6.0.3 2026-07-20

Совместимость модуля JavaFX WebView

  • Исправлено разрешение необязательного модуля jdk.jsobject для поддерживаемых сред P4JX, пересобранных из той же версии JDK/VLX. Совместимая среда больше не отклоняется только из-за различий в байтах полного образа lib/modules.
  • Сохранены выбор артефакта по линии JDK и платформе, точная проверка SHA-256 и имени модуля, а также повторная проверка замыкания зависимостей после установки.

6.0.2 2026-07-20

Совместимость JavaFX WebView

  • Устранены сбои при запуске JavaFX WebView: javafx.media теперь поставляется вместе с javafx.web, а при отсутствии модуля в сокращённой среде выполнения автоматически выбирается jdk.jsobject, точно соответствующий P4JX.
  • Добавлена загрузка необязательных модулей из регионального публичного сервиса с фиксацией SHA-256 и привязкой к версии, платформе и среде выполнения. Среды, уже содержащие модуль, пропускают загрузку.

6.0.1 2026-07-20

Совместимость с JavaFX

  • Исправлены сбои при запуске fat JAR со встроенными классами среды выполнения JavaFX. Автоматическое применение правил совместимости теперь оставляет пространства имен встроенных API, реализации и моста JNI JavaFX незашифрованными, предотвращая дублирование принадлежности классов с упакованными модулями JavaFX.
  • Улучшены диагностика совместимости и многоязычные рекомендации для приложений со встроенными средами выполнения JavaFX.

6.0.0 2026-07-20

Protector4J 6.0 — это крупный выпуск с полностью переработанной архитектурой защиты, а не обычное последовательное обновление линейки 5.x.

Архитектура и защита

  • Переработана базовая архитектура Protector4J и представлен новый механизм защиты P4JX.
  • Добавлено около 100 мер защиты на уровнях создания архивов, загрузки классов, выполнения, противодействия отладке и контроля целостности артефактов.
  • Существенно повышен барьер для обратной разработки. Новая архитектура призвана сделать быстрый взлом крайне сложным даже при использовании передовых инструментов анализа с поддержкой ИИ.
  • Усилена безопасность запросов лицензий, загрузки сред выполнения, проверки артефактов и кроссплатформенных установщиков.

Работа с продуктом

  • Добавлена поддержка JDK 8, 11, 17, 21 и 25, а также графические процессы упаковки приложений Java, JavaFX, Spring Boot и Tomcat.
  • Добавлены проверка совместимости, выборочное шифрование классов, защита JAR-файлов зависимостей, импорт и экспорт задач YAML, а также пакетная сборка для нескольких целевых платформ.
  • Переработан интерфейс настольного приложения: теперь он поддерживает 11 языков и сохраняет языковые настройки.

Переход на новую версию

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

Скачать Protector4J 6.0

Предыдущие версии

История изменений

5.7.0 2026-03-07

  • Добавлена поддержка JDK25

5.6.2 2026-01-03

  • Исправлена проблема загрузки jre
  • Исправлена проблема pidkiller

5.6.1 2025-08-13

  • Проблема запуска

5.6.0 2025-08-09

  • Исправлена проблема ресурсов GraphQL

5.5.1 2025-06-01

  • Исправлена проблема загрузки ресурсов

5.5.0 2025-04-19

  • Исправлены проблемы с декодером

5.4.1 2025-04-17

  • Сборка pidchecker с последней версией go

5.4.0 2025-04-08

  • Обновление JDK17 до 17.0.14

5.3.5 2025-03-26

  • Обновление исполняемой обёртки

5.3.4 2025-03-08

  • Исправлена проблема невозможности запуска на некоторых системах Windows

5.3.3 2025-02-20

  • Исправлена проблема невозможности запуска на некоторых системах Windows

5.3.2 2025-02-04

  • Исправлена проблема некорректного META-INF, возникающая при шифровании JAVA-библиотеки

5.3.1 2025-01-28

  • Исправлена проблема невозможности запуска на процессорах более ранних версий

5.3.0 2025-01-25

  • Добавлен модуль jdk.naming.dns

5.2.0 2025-01-19

  • Новый декодер

5.1.0 2025-01-12

  • Исправлена проблема ложного срабатывания декодера в Windows

5.0.0 2024-12-28

  • Добавлена поддержка автономного шифрования Java-библиотеки (предварительная версия), позволяющая приложению работать с обычным jre

4.8.1 2024-12-08

  • Исправлена проблема отсутствия проверки типов файлов при обработке задач Tomcat

4.8.0 2024-11-30

  • Исправлена проблема невозможности запуска в Windows 7
  • Исправлена проблема отсутствия импорта модуля jdk.net

4.7.1 2024-09-19

  • Исправлена проблема некорректной работы сгенерированного приложения для Linux

4.7.0 2024-09-08

  • Исправлена проблема невозможности запуска сгенерированной программы в macOS
  • Исправлена проблема ложного срабатывания антивирусного ПО

4.6.2 2024-07-21

  • Добавлена опция удаления файла application.properties из библиотек для приложений Spring Boot
  • Добавлена полоса прокрутки для решения проблемы неполного отображения элементов при слишком маленьком окне

4.6.1 2024-05-25

  • Исправлена проблема повторной загрузки vlxjre8 на Mac
  • Исправлена проблема пропуска параметров JVM при загрузке TaskInfo

4.6.0 2024-04-30

  • Обновление jdk для решения проблемы с отсутствующим модулем login
  • Обновление add-permission-script.sh

4.5.3 2024-03-16

  • Добавлен tomcat 10.1.19

4.5.2 2024-03-02

  • Исправлена проблема обёртки в Windows

4.5.1 2024-03-01

  • Исправлена проблема подписи для Java 21

4.5.0 2024-02-25

  • Исправлена проблема неработоспособности виртуальных потоков

4.4.0 2024-02-24

  • Исправлена проблема с декодером

4.3.0 2024-02-06

  • Обновление Tomcat до 9.0.85

4.2.2 2024-01-31

  • Удалён ненужный файл wrapper.json

4.2.1 2024-01-25

  • Исправлена проблема скрипта прав доступа

4.2.0 2024-01-23

  • Исправлена проблема завершения приложения из-за broken pipe
  • Исправлена проблема завершения приложения из-за автоочистки папки /tmp
  • Исправлена проблема невозможности Java 8 найти libfreetype в macOS
  • Исправлена проблема конфликтов при наличии нескольких файлов application.properties

4.1.0 2023-10-30

  • Исправлена проблема с JDK8
  • Исправлена проблема broken pipe в Linux и macOS
  • Пользователи из Китая теперь могут выбрать сервер https://protector4j.cn

4.0.1 2023-10-24

  • Обновление декодера

4.0.0 2023-10-17

  • Добавлена поддержка Java 21
  • Улучшения безопасности для более надёжной защиты

3.3.0 2023-09-29

  • Исправлена проблема некорректного запуска проектов Tomcat
  • Предупреждение при наличии дублирующихся классов в проекте

3.2.0 2023-08-24

  • Исправлена проблема с кодировкой Windows в мультиязычных средах

3.1.1 2023-08-02

  • Исправлено искажение символов в путях на не-английском языке

3.1.0 2023-07-22

  • Исправлены проблемы, связанные с ZipInputStream
  • Исправлены проблемы, связанные с ZipFileSystem
  • Исправлены другие проблемы

3.0.2 2023-05-29

  • Исправлены проблемы декодирования в Windows

3.0.1 2023-05-25

  • Исправлены проблемы запуска версии mac-aarch64

3.0.0 2023-05-20

  • Новая система запуска приложений
  • Новая система декодирования
  • Java 8 теперь может запускать программы с помощью команды -jar

2.12.5 2023-05-12

  • Исправлена проблема: jdk8 не находит freetype в macOS

2.12.4 2023-02-28

  • Обновление бэкенда