保护 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. 战争文件

演示应用程序

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

未加密应用程序

swing-plain.jar

加密应用程序

swing-encrypted.jar