保护 Java 库

使用 GUI 工具保护 Java 库

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

image-20241222183944773

对于 macOS 用户,只需像常规 Mac 应用程序一样双击 Protector4J.app。

登录

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

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

选择申请类型

点击应用类型页面的“Java 库”按钮

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

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

指定加密方法

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

image-20241222111100288

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

# Protect a method
# Class name.method name&method signature
Hello.hello&()V
# Protect all methods under the class
# Directly input the class name
Hello

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

使用 CLI 工具保护 Java 库

配置文件

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

前往 protector4j/task-templates 文件夹,查找 java-lib-task.yml,复制并修改一个。

# The jar files that need to be encrypted
jarFiles: []

# Protect a method: MethodName&MethodSignature, like io.test.Hello.hello&()V
# Protect all methods in a Class: ClassName, like io.test.Hello
itemsToProtect: []

# Exclude items that are not encrypted in the same format as itemsToProtect.
itemsToExclude: []


# The output folder
outputFolder: ''

# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true

执行加密任务

转到 Protector4J 文件夹并执行以下命令。

Linux 或 macOS

对于 macOS 用户,您可以在以下位置找到 CLI 工具 /Applictions/Protector4J.app/Contents/protector4j-mac

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

视窗

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

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

加密结果

与Java应用整体加密不同,Java库加密针对的是特定方法,加密完成后,你选择的方法会被转换成原生代码,可以配合标准JRE使用,如果用户需要破解,就只能在二进制层面而非字节码层面进行破解,破解难度大大增加。

加密前

image-20250204115631030

加密后

image-20250204115731661

加密完成后,Main方法转换为本机方法。

限制

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

演示应用程序

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

未加密的应用程序

swing-plain.jar

加密应用程序

swing 加密文件