保护JavaSE应用程序
入门视频
▶️ https://www.youtube.com/watch?v=MQf9IiDHQ18
下载
访问 https://protector4j.com/download 下载最新版。
安装
Windows 与 Linux
没有特别的安装步骤, 只需要下载压缩包并解压即可。
macOS
下载dmg文件并拖拽Protector4J到Applications, 程序的实际内容在Protector4J.app/Contents/protector4j-mac

使用GUI工具加密JavaSE应用
进入Protector4J文件夹, 运行p4j-ui[.exe] , 你将会看到下面的用户界面
对于macOS用户, 像普通mac应用一样双击Protector4J.app即可

登录
如果你已经购买了授权, 请点击右上角的登录按钮,输入用户信息,如果没有授权,您仍然可以试用这个工具

选择应用类型
在程序类型页面点击"JavaSE Application"按钮。

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

选项
Just encrypt jar files
只加密jar文件,不输出整个jre, 这个选项通常与KeySeed特性结合使用,用于更新现有的程序。
创建可执行文件
创建用于启动应用的可执行文件, 请不要添加.exe扩展名.

隐藏命令行窗口
这个选项仅对Windows下的GUI程序有效,用于隐藏程序执行时的命令行窗口
JVM选项
设置JVM选项,如-Xmx与-Xms等,以空格或者换行分割。
输出

Java版本选择
选择对应的Java版本, 支持Java 8, Java 11 and Java 17.
创建新文件夹
默认选择, 加密任务会在输出文件夹中创建一个名为 p4j-[task-id]的文件夹, 最终输出的结果存储在这个文件夹中。
包含JavaFX
如果是JavaFX应用请选择此项
SWT Application
如果是SWT应用请选择此项。
KeySeed
默认情况下加密任务每次都会从服务端请求一个随机的key用于加密, 在不同加密任务中生成的文件无法兼容使用。 如果指定了KeySeed,相同的的KeySeed会生成相同的加密Key, 这个选项可以与之前的“Only Encrypt Jar Files”用于更新现有应用。这个选项仅对授权用户有效。
执行加密任务
请等待一段时间,待加密任务完成之后,您可以在输出文件夹中看到输出的加密应用。

运行加密的应用
有三种方式运行加密后的应用
- 使用exe文件运行
使用加密任务生成的可执行文件运行加密应用
- 使用脚本运行
使用与exe文件同名的脚本文件运行应用,如果你打开这个脚本文件,你可以看到我们如何使用传统的Java命令运行程序。
- 使用传统的Java命令运行程序
你也可以使用传统的Java命令手动运行程序,命令的格式与传统Java命令相同。
我们可以在输出文件夹中看到一个命名vlxjre的文件夹,这是我们定制的jre运行环境,同时加密后的jar文件存储在vlxlib文件夹中。
vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass
Java 8 当前不支持使用vlxjre/bin/java -jar的方式运行, 请使用vlxjre/bin/java -cp 的方式
注意事项
如果这个程序的目标平台是macOS或者Linux,但是在Windows下生成,在首次使用时请在目标平台上运行add-executable-permission.sh,以给予程序运行权限。
修改exe文件的运行参数
如果你需要修改exe文件的JVM参数, 编码exe-name.json, 修改JVMOptions数组的值
"JArgs" : [
"-DParam1=value1",
"-DParam2=value2"
]
使用命令行工具加密JavaSE应用
配置文件
命令行工具需要指定一个任务文件作为参数
在task-templates文件夹中找到java-task.yml,复制并且修改
# Available values: 8,11,17
javaVersion: 8
# The jar files that need to be encrypted
jarFiles: []
# Only encrypt the jar files, do not deploy the runtime
# This option is used while upgrading an existing application
onlyEncryptJarFiles: false
## [ Executable file information ]
# The executable file name
exeFileName: ''
# Hide command line window, only valid for Windows
hideConsole: false
# The main class of this Java Application
mainClass: ''
# The splash image
splash: ''
# JVM Options
jvmOptions: []
## [ Output Options ]
# The output folder
outputFolder: ''
# Create a new and unique folder for the application, the folder name is like p4j-<taskId>
createNewFolder: true
# Whether this is a JavaFX application
includeJavaFX: false
# Whether this a swt gui application
swtApplication: false
# Fixed key seed, only avaiable for licensed user
# Jars encrypted in different tasks can be used together with same key seed
keySeed: ''
# The target platforms
# available values: [win, linux, mac] or empty for current platform
platforms: []
执行加密任务
进入到Protector4J文件夹执行下面命令
Linux或macOS
对于macOS用户,你可以在Protector4J.app/Contents/protector4j-mac下找到cli工具
./p4j -t java -f path-of-task-file
Windows
p4j -t java -f path-of-task-file
> -t task type > > -f task file
可以运行p4j --help查看详细参数
添加用户信息运行
./p4j -t java -f path-of-task-file -u email -p password
查看结果
加密任务完成之后,请前往输出文件夹查看结果。
运行加密的应用
有三种方式运行加密后的应用
- 使用exe文件运行
使用加密任务生成的可执行文件运行加密应用
- 使用脚本运行
使用与exe文件同名的脚本文件运行应用,如果你打开这个脚本文件,你可以看到我们如何使用传统的Java命令运行程序。
- 使用传统的Java命令运行程序
你也可以使用传统的Java命令手动运行程序,命令的格式与传统Java命令相同。
我们可以在输出文件夹中看到一个命名vlxjre的文件夹,这是我们定制的jre运行环境,同时加密后的jar文件存储在vlxlib文件夹中。
vlxjre/bin/java -jar vlxlib/xxx.jar
vlxjre/bin/java -cp vlxlib/xxx.jar MainClass
vlxjre/bin/java -cp "vlxlib/*" MainClass
vlxjre/bin/java -Xms512M -Xmx1024m -cp "vlxlib/*" MainClass