Proteger aplicações JavaSE

Vídeos de Introdução

▶️ YouTube

▶️ Bilibili

Download

Visite https://protector4j.com/download para baixar a versão mais recente

Instalação

Windows e Linux

Não há etapas especiais de instalação, basta baixar o arquivo compactado e extraí-lo.

macOS

Baixe o arquivo dmg e arraste o Protector4J para Applications. O conteúdo real desta ferramenta está em /Applications/Protector4J.app/Contents/protector4j-mac

Criptografar aplicações JavaSE com ferramentas GUI

Vá para a pasta do Protector4J, execute p4j-ui[.exe], você verá a seguinte interface de usuário.

Para usuários macOS, basta clicar duas vezes em Protector4J.app como um aplicativo Mac comum.

Login

Se você já adquiriu a licença, clique no botão de login no canto superior direito e insira suas informações de usuário. Se você não tem uma licença, ainda pode experimentar esta ferramenta.

Selecionar Tipo de Aplicação

Clique no botão "JavaSE Application" na página de tipo de aplicação.

Selecione o arquivo jar/war que precisa ser criptografado

Selecione os arquivos jar/war que deseja criptografar, você pode selecionar um ou vários arquivos

Opções

Apenas criptografar arquivos jar

Apenas criptografa os arquivos jar, sem implantar todo o jre. Esta opção é geralmente usada em combinação com o recurso KeySeed para atualizar programas existentes.

Criar arquivo executável

Cria um arquivo executável para iniciar a aplicação, por favor não adicione a extensão .exe.

Console Oculto

Esta opção é efetiva apenas para programas GUI no Windows e é usada para ocultar a janela de linha de comando durante a execução do programa.

Opções JVM

Defina as opções da JVM, como -Xmx e -Xms, separadas por espaços ou quebras de linha.

Saída

Seleção da versão Java

Escolha a versão do Java, suportando Java 8, Java 11, Java 17 e Java 21

Criar nova pasta

Selecionado por padrão, a tarefa de criptografia criará um arquivo chamado p4j-[task-id] na pasta de saída. O resultado da saída é armazenado nesta pasta.

Incluindo JavaFX

Se for uma aplicação JavaFX, selecione esta opção

Aplicação SWT

Se for uma aplicação SWT, selecione esta opção.

KeySeed

A tarefa de criptografia solicitará uma chave aleatória do servidor para criptografia por padrão. Arquivos gerados em diferentes tarefas de criptografia não podem ser usados juntos. Se o KeySeed for especificado, o mesmo KeySeed gerará a mesma chave de criptografia. Esta opção pode ser usada com a opção anterior "Apenas Criptografar Arquivos Jar" para atualizar aplicações existentes. Esta opção é válida apenas para usuários licenciados.

Executar Tarefa de Criptografia

Aguarde um momento, após a conclusão da tarefa de criptografia, você pode ver o resultado da saída da aplicação criptografada na pasta de saída.

Executar aplicações criptografadas

Existem três maneiras de executar a aplicação criptografada

  1. Executar com arquivo exe

Se a plataforma alvo for Windows, você pode executar a aplicação criptografada com o arquivo executável gerado durante a tarefa de criptografia.

  1. Executar com script

Se a plataforma alvo for Linux ou macOS, você pode encontrar um arquivo de script com o nome exe-name.sh, pode executar a aplicação com este arquivo de script.

  1. Executar o programa com o comando Java tradicional

Você também pode executar manualmente o programa com vlxjre/bin/java, o formato deste comando é o mesmo que o comando java normal.

Podemos ver uma pasta chamada vlxjre no diretório de saída, que é o nosso JRE personalizado, e os arquivos jar criptografados estão armazenados na pasta 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 atualmente não suporta a execução via vlxjre/bin/java -jar. Por favor, use vlxjre/bin/java -cp xx MainClass

Observações

Se a plataforma alvo deste programa for macOS ou Linux, mas foi compilado no Windows, execute add-executable-permission.sh na plataforma alvo para conceder permissão de execução ao programa antes da primeira inicialização.

Modificar os parâmetros JVM do arquivo exe

Windows

Se você precisar modificar os parâmetros JVM do arquivo exe, edite exe-name.json e modifique os valores no array JArgs.

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

Linux e macOS

Basta abrir o arquivo de script e adicionar ou modificar os parâmetros JVM.

Criptografar aplicações JavaSE com ferramenta CLI.

Arquivo de configuração

A ferramenta CLI precisa especificar um arquivo de tarefa como parâmetro.

Vá para a pasta protector4j/task-templates, encontre java-task.yml, copie e modifique um.

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

# 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: []

Executar tarefa de criptografia.

Vá para a pasta do Protector4J e execute o seguinte comando.

Linux ou macOS

Para usuários macOS, você pode encontrar a ferramenta CLI em /Applictions/Protector4J.app/Contents/protector4j-mac.

./p4j -t java -f path-of-task-file

Windows

p4j -t java -f path-of-task-file

Você pode executar p4j --help para ver os parâmetros detalhados.

Executar com informações da conta

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

Ver resultados

Após a conclusão da tarefa de criptografia, vá para a pasta de saída para verificar os resultados.

Executar aplicações criptografadas

Existem três maneiras de executar a aplicação criptografada

  1. Executar com arquivo exe

Se a plataforma alvo for Windows, você pode executar a aplicação criptografada com o arquivo executável gerado pela tarefa de criptografia.

  1. Executar com script

Se a plataforma alvo for Linux ou macOS, você pode encontrar um arquivo de script com o nome exe-name.sh, pode executar a aplicação com este arquivo de script.

  1. Executar o programa com o comando Java tradicional

Você também pode executar manualmente o programa com vlxjre/bin/java, o formato deste comando é o mesmo que o comando java normal.

Podemos ver uma pasta chamada vlxjre no diretório de saída, que é o nosso JRE personalizado, e os arquivos jar criptografados estão armazenados na pasta 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 atualmente não suporta a execução via vlxjre/bin/java -jar. Por favor, use vlxjre/bin/java -cp xx MainClass

Observações

Se a plataforma alvo deste programa for macOS ou Linux, mas foi compilado no Windows, execute add-executable-permission.sh na plataforma alvo para conceder permissão de execução ao programa antes da primeira inicialização.