История изменений
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, чтобы воспользоваться усиленной защитой.
Предыдущие версии
История изменений
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
- Обновление бэкенда