Proteger Biblioteca Java

Proteger Biblioteca Java com Ferramenta GUI

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

image-20241222183944773

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.

O recurso de proteção de biblioteca Java requer a edição Enterprise.

Selecionar Tipo de Aplicação

Clique no botão "Java Library" 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

Especificar o método de criptografia

Nesta página você pode selecionar o método de criptografia

image-20241222111100288

Você pode selecionar as classes e métodos que precisam de proteção no diretório de estrutura à direita, ou pode inserir manualmente os itens que precisam de proteção no seguinte formato.

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

Você pode inserir o conteúdo a ser excluído em Itens para excluir usando o mesmo formato.

Proteger Biblioteca Java 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-lib-task.yml, copie e modifique um.

# 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

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-lib -f path-of-task-file -u email -p password

Windows

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

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

O resultado da Criptografia

Diferente da criptografia geral de aplicações Java, a criptografia de bibliotecas Java tem como alvo métodos específicos. Após a conclusão da criptografia, o método que você selecionou será convertido em código nativo, que pode ser usado em conjunto com um JRE padrão. Se os usuários precisarem quebrá-lo, devem fazê-lo no nível binário em vez do nível de bytecode, aumentando significativamente a dificuldade de quebra.

Antes da criptografia

image-20250204115631030

Após a criptografia

image-20250204115731661

Após a conclusão da criptografia, o método Main é convertido em um método nativo.

Limitações

  1. Não suporta blocos de código try-catch.
  2. Não suporta arquivos jar empacotados pelo Spring Boot.
  3. Não suporta arquivos war

Aplicação Demo

Atualmente, a função de criptografia de biblioteca Java não suporta teste gratuito para usuários, você pode baixar esta aplicação demo para ver o efeito da criptografia de biblioteca Java. Esta é um programa swingapp, você pode usar java -jar swingapp.jar para executá-lo. Sua função principal é convertida em um método nativo, você pode usar uma ferramenta de descompilador para verificação!

Aplicação não criptografada

swing-plain.jar

Aplicação criptografada

swing-encrypted.jar