保护 Java 库

使用 GUI 工具保护 Java 库

进入 Protector4J 文件夹,执行 p4j-ui[.exe],您将看到如下用户界面。

image-20241222183944773

macOS 用户只需像普通 Mac 应用程序一样双击 Protector4J.app 即可。

登录

如果您已购买许可证,请点击右上角的登录按钮并输入您的用户信息。如果没有许可证,您仍然可以试用此工具。

Java 库保护功能需要企业版。

选择应用类型

在应用类型页面点击 "Java Library" 按钮

选择需要加密的 jar/war 文件

选择您要加密的 jar/war 文件,可以选择一个或多个文件

指定加密方法

在此页面您可以选择加密方法

image-20241222111100288

您可以从右侧的结构目录中选择需要保护的类和方法,也可以按以下格式手动输入需要保护的项目。

# 保护一个方法
# 类名.方法名&方法签名
Hello.hello&()V
# 保护类下的所有方法
# 直接输入类名
Hello

您可以使用相同的格式在排除项中输入要排除的内容。

使用 CLI 工具保护 Java 库

配置文件

CLI 工具需要指定任务文件作为参数。

进入 protector4j/task-templates 文件夹,找到 java-lib-task.yml,复制并修改。

# 需要加密的 jar 文件
jarFiles: []

# 保护一个方法: 方法名&方法签名, 如 io.test.Hello.hello&()V
# 保护类中的所有方法: 类名, 如 io.test.Hello
itemsToProtect: []

# 排除不加密的项目,格式与 itemsToProtect 相同
itemsToExclude: []

# 输出文件夹
outputFolder: ''

# 为应用程序创建新的唯一文件夹,文件夹名类似 p4j-<taskId>
createNewFolder: true

执行加密任务

进入 Protector4J 文件夹,执行以下命令。

Linux 或 macOS

macOS 用户可以在 /Applictions/Protector4J.app/Contents/protector4j-mac 找到 CLI 工具。

./p4j -t java-lib -f path-of-task-file -u email -p password

Windows

p4j -t java-lib -f path-of-task-file -u email -p password

执行 p4j --help 查看详细参数。

加密结果

与 Java 应用程序的整体加密不同,Java 库加密针对的是特定方法。加密完成后,您选择的方法将被转换为原生代码,可以与标准 JRE 配合使用。如果用户需要破解,必须在二进制级别进行,而非字节码级别,这大大增加了破解难度。

加密前

image-20250204115631030

加密后

image-20250204115731661

加密完成后,Main 方法被转换为 native 方法。

限制

  1. 不支持 try-catch 代码块。
  2. 不支持 Spring Boot 打包的 jar 文件。
  3. 不支持 war 文件。

演示应用程序

目前 Java 库加密功能不支持免费用户试用,您可以下载该演示应用程序查看 Java 库加密的效果。这是一个 Swing 应用程序,您可以使用 java -jar swingapp.jar 运行它,其主要功能已转换为 native 方法,您可以使用反编译工具进行验证!

未加密的应用程序

swing-plain.jar

加密后的应用程序

swing-encrypted.jar