保護 Spring Boot 應用程式

入門影片

▶️ YouTube

▶️ Bilibili

下載

前往 https://protector4j.com/download 下載最新版本

安裝

Windows 和 Linux

無需特殊安裝步驟,只需下載壓縮包並解壓即可。

macOS

下載 dmg 檔案並將 Protector4J 拖曳到 Applications 資料夾中。此工具的實際內容位於 /Applications/Protector4J.app/Contents/protector4j-mac

使用圖形介面工具加密 Spring Boot 應用程式

進入 Protector4J 資料夾,執行 p4j-ui[.exe],您將看到以下使用者介面。

對於 macOS 使用者,只需像普通 Mac 應用程式一樣雙擊 Protector4J.app 即可。

登入

如果您已購買授權,請點擊右上角的登入按鈕並輸入您的使用者資訊。如果您沒有授權,仍然可以試用此工具。

選擇應用程式類型

在應用程式類型頁面上點擊「Spring Boot Application」按鈕。

選擇需要加密的 jar/war 檔案

選擇您要加密的 jar/war 檔案,您可以選擇一個或多個檔案

選項

僅加密 jar 檔案

僅加密 jar 檔案,不部署整個 JRE。此選項通常與 KeySeed 功能結合使用,用於更新現有程式。

建立可執行檔

為應用程式建立可執行檔,請不要加上 .exe 副檔名。

隱藏控制台

此選項僅對 Windows 上的 GUI 程式有效,用於在程式執行期間隱藏命令列視窗。

JVM 選項

設定 JVM 選項,例如 -Xmx 和 -Xms,以空格或換行分隔。

輸出

Java 版本選擇

選擇 Java 版本,支援 Java 8、Java 11、Java 17 和 Java 21

建立新資料夾

預設為選取狀態,加密任務將在輸出資料夾中建立名為 p4j-[task-id] 的資料夾,輸出結果儲存在此資料夾中。

包含 JavaFX

如果是 JavaFX 應用程式,請選擇此選項

SWT 應用程式

如果是 SWT 應用程式,請選擇此選項。

KeySeed

加密任務預設會從伺服器請求一個隨機金鑰進行加密。不同加密任務產生的檔案無法一起使用。 如果指定了 KeySeed,相同的 KeySeed 將產生相同的加密金鑰。此選項可以與前面的「僅加密 Jar 檔案」選項搭配使用,來更新現有應用程式。 此選項僅對已授權使用者有效。

執行加密任務

請稍候片刻,加密任務完成後,您可以在輸出資料夾中查看加密應用程式的輸出結果。

執行加密後的應用程式

有三種方式可以執行加密後的應用程式

  1. 使用 exe 檔案執行

如果目標平台是 Windows,您可以使用加密任務期間產生的可執行檔來執行加密後的應用程式。

  1. 使用腳本執行

如果目標平台是 Linux 或 macOS,您可以找到名為 exe-name.sh 的腳本檔案,使用此腳本檔案來執行應用程式。

  1. 使用傳統 Java 命令執行程式

您也可以使用 vlxjre/bin/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 xx MainClass

注意事項

如果此程式的目標平台是 macOS 或 Linux,但是在 Windows 上建構,請在首次啟動前在目標平台上執行 add-executable-permission.sh 以授予程式執行權限。

修改 exe 檔案的 JVM 參數

Windows

如果您需要修改 exe 檔案的 JVM 參數,請編輯 exe-name.json 並修改 JArgs 陣列中的值。

"JArgs": [
  "-DParam1=value1",
  "-DParam2=value2"
]

Linux 和 macOS

只需開啟腳本檔案並新增或修改 JVM 參數即可。

使用命令列工具加密 Spring Boot 應用程式

組態檔

命令列工具需要指定一個任務檔案作為參數。

進入 protector4j/task-templates 資料夾,找到 spring-boot-task.yml,複製並修改一份。

# Available values: 8,11,17,21
javaVersion: 17

# The jar file of spring boot application
springBootJarFile: ''
# 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 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, keep it empty for current plaform,
# available values: [win, linux, mac]
platforms: []

## [ Windows exe file information (Optional and only valid for Windows) ]
icon: ''
productName: ''
productVersion: ''
fileVersion: ''
fileDescription: ''
companyName: ''
legalCopyright: ''

執行加密任務

進入 Protector4J 資料夾並執行以下命令。

Linux 或 macOS

對於 macOS 使用者,您可以在 /Applictions/Protector4J.app/Contents/protector4j-mac 找到命令列工具。

./p4j -t spring-boot -f path-of-task-file

Windows

p4j -t spring-boot -f path-of-task-file

您可以執行 p4j --help 來查看詳細參數。

使用帳號資訊執行

./p4j -t spring-boot -f path-of-task-file -u email -p password

查看結果

加密任務完成後,請前往輸出資料夾查看結果。

執行加密後的應用程式

有三種方式可以執行加密後的應用程式

  1. 使用 exe 檔案執行

如果目標平台是 Windows,您可以使用加密任務產生的可執行檔來執行加密後的應用程式。

  1. 使用腳本執行

如果目標平台是 Linux 或 macOS,您可以找到名為 exe-name.sh 的腳本檔案,使用此腳本檔案來執行應用程式。

  1. 使用傳統 Java 命令執行程式

您也可以使用 vlxjre/bin/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 xx MainClass

注意事項

如果此程式的目標平台是 macOS 或 Linux,但是在 Windows 上建構,請在首次啟動前在目標平台上執行 add-executable-permission.sh 以授予程式執行權限。