更新日志

6.0.9 2026-07-25

加密应用打印空指针异常时的崩溃修复

  • 修复了一个 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 的问题:app.p4jx 中的 Tomcat 类不再以物理 classpath JAR 的形式可见。Tomcat 9.0.107 和 10.1.53 现在作为不可变、带版本号的 R2/COS 制品,按 Servlet 命名空间自动选择,首次使用时下载并缓存在本地,同时核对精确 SHA-256 和 JAR 清单。被篡改的缓存会被丢弃并重新下载。
  • 公开的 WEB-INF/lib JAR 现在会作为按应用隔离、受 Hash 绑定的物理 Web 资源落盘,避免 Spring 启动期间为每个类重复读取和校验嵌套归档。
  • 新构建现在默认使用生产许可端点 https://protector4j.com。只有显式设置 P4JX_LICENSE_MODE=dev-PlicenseMode=dev 时,才会使用内部端点 http://10.10.10.16:16002

6.0.7 2026-07-24

Tomcat 嵌套依赖与可信动态类

  • 修复受保护的 Tomcat WAR 从 WEB-INF/lib/*.jar 加载类或服务时的失败。Protector4J 现在会将嵌套 JAR 和类的精确 SHA-256 元数据密封到 app.p4jx 中;未知、被替换或被篡改的依赖仍会被拒绝。
  • 修复 JDK 11 的 MethodHandles.Lookup#defineClass 使用 JDK 11 特有来源标记而导致的 Spring CGLIB 和 Hibernate Byte Buddy 失败。动态信任仍必须来自 VM 已验证的调用类或加载器来源;标记字符串、类名、路径、包名和 CodeSource 均不能授予信任。
  • 为 JDK 11、17、21 和 25 发布 VLX 1.0.15 运行时,覆盖 24 个受支持平台组合。全部通过严格的 L1-L5 门禁,包括真实 FXML、Swing/AWT、Tomcat 嵌套依赖加载,以及来源和篡改负向场景。JDK 8 继续保持 VLX 1.0.11。

6.0.6 2026-07-22

可信类定义来源传播

  • 修复受保护 JavaFX FXML 应用启动失败的问题:MethodUtil 会通过 defineClass(byte[]) 定义已由 VM 验证来源的 Trampoline 辅助类。现在信任只从 VM 已验证的类或加载器来源传播,不再来自类名、路径、包名或 CodeSource 字符串。
  • 新增真实 FXML 覆盖,包括 fx:controller、属性元素、Controller 注入和 WebView 启动,并增加可信动态定义、两级传播、未知来源、未授权 JAR 以及替换 protected class 名称的回归测试。
  • 发布 JDK 11、17、21 和 25 的 VLX 1.0.14 运行时。JDK 8 继续保持 VLX 1.0.11。

6.0.5 2026-07-21

JavaFX 原生运行时完整性

  • 通过将打包后的 JavaFX DLL 文件置于 vlxjre/bin,并调整启动器的原生库搜索路径,解决了 Windows 环境下 JavaFX WebView 启动失败的问题(Graphics Device initialization failed / No toolkit found)。
  • 将加密的 app.p4jx 允许列表扩展到外部原生库。无论路径如何,JavaFX 原生文件都必须与精确的 SHA-256 值匹配,同时 Glass 会重新验证实际加载的文件;无法识别或被篡改的文件将被拒绝。
  • 为 JDK 11、17、21 和 25 发布了更新后的 Protector4J 运行时。所支持的 JavaFX 平台组合已通过 L5.1-L5.4,覆盖 WebView 启动,以及对模块 JAR、jdk.jsobject 和 Glass 原生库的篡改拒绝。

6.0.4 2026-07-21

外部模块完整性及 JavaFX 运行时兼容性

  • 已取消对外部模块基于路径的信任机制。现在,每个外部模块 JAR 都必须与嵌入 app.p4jx 的精确 SHA-256 允许列表条目匹配;无论位于何处,未识别或被篡改的文件都会被拒绝。
  • 增加了从 JavaFX module-info.class 自动检测依赖闭包的功能,并严格控制指定 JavaFX 和 JDK 模块的准入,包括 javafx.mediajdk.jsobject
  • 通过新发布的 P4JX 运行时,修复了所有受支持 JDK 版本及平台上的 JavaFX WebView 启动问题,以及启动层建立后的 E818 / ClassFormatError 错误。

6.0.3 2026-07-20

JavaFX WebView 模块兼容性

  • 修复由相同 JDK/VLX 版本重新构建的受支持 P4JX 运行时的可选 jdk.jsobject 解析问题。打包不再仅因完整 lib/modules 镜像字节不同而拒绝兼容运行时。
  • 保留按训练线和平台选择制品、模块精确 SHA-256 与模块名校验,并在安装后重新验证依赖闭包。

6.0.2 2026-07-20

JavaFX WebView 兼容性

  • 修复 JavaFX WebView 启动失败:将 javafx.mediajavafx.web 一起打包,并在裁剪运行时未包含模块时自动解析与 P4JX 精确匹配的 jdk.jsobject
  • 新增从区域公共下载服务获取可选模块的功能;制品固定 SHA-256 并绑定版本、平台和运行时。已经包含该模块的运行时会跳过下载。

6.0.1 2026-07-20

JavaFX 兼容性

  • 修复内嵌 JavaFX 运行时类的 fat JAR 启动失败问题。兼容性自动应用现在会让内嵌的 JavaFX API、实现和 JNI 桥接命名空间保持未加密,避免与随包 JavaFX 模块发生重复归属冲突。
  • 改进对 shaded JavaFX 运行时应用的兼容性诊断和多语言指引。

6.0.0 2026-07-20

Protector4J 6.0 是建立在全新保护架构上的重大版本,并非 5.x 系列的普通增量更新。

架构与防护

  • 重新设计 Protector4J 的基础架构,并引入全新的 P4JX 保护引擎。
  • 在归档生成、类加载、运行时执行、反调试和制品完整性等层面增加接近 100 道防护措施。
  • 大幅提高逆向分析门槛。新架构的目标是在使用先进 AI 辅助分析工具的情况下,也让短期破解变得极其困难。
  • 增强许可请求、运行时下载、制品校验和跨平台安装包的安全性。

产品体验

  • 支持 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

  • 使用最新 Go 版本构建 pidchecker

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

  • 修复 Java 库加密引入的错误 META-INF 问题

5.3.1 2025-01-28

  • 修复无法在低版本 CPU 上运行的问题

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

  • 为 SpringBoot 应用添加从库中移除 application.properties 文件的选项
  • 添加滚动条以解决窗口过小时元素显示不全的问题

4.6.1 2024-05-25

  • 修复 Mac 上重复下载 vlxjre8 的问题
  • 修复加载 TaskInfo 时 JVM 选项丢失的问题

4.6.0 2024-04-30

  • 更新 JDK 以解决登录模块缺失问题
  • 更新 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

  • 修复管道断开导致应用退出的问题
  • 修复 /tmp 文件夹自动清理导致应用退出的问题
  • 修复 Java 8 在 macOS 上找不到 libfreetype 的问题
  • 修复多个 application.properties 存在时的冲突问题

4.1.0 2023-10-30

  • 修复 JDK8 问题
  • 修复 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

  • 修复 macOS 上 jdk8 找不到 freetype 的问题

2.12.4 2023-02-28

  • 更新后端