更新日志
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/libJAR 现在会作为按应用隔离、受 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.media和jdk.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.media与javafx.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 重新构建和迁移已有加密应用,以获得更强大的保护。
早期版本
更新日志
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
- 更新后端