Protéger les bibliothèques Java

Protéger les bibliothèques Java avec l'outil GUI

Accédez au dossier Protector4J, exécutez p4j-ui[.exe], vous verrez l'interface utilisateur suivante.

image-20241222183944773

Pour les utilisateurs macOS, double-cliquez simplement sur Protector4J.app comme une application Mac classique.

Connexion

Si vous avez déjà acheté la licence, veuillez cliquer sur le bouton de connexion dans le coin supérieur droit et saisir vos informations utilisateur. Si vous n'avez pas de licence, vous pouvez quand même essayer cet outil.

La fonctionnalité de protection des bibliothèques Java nécessite l'édition Enterprise.

Sélectionner le type d'application

Cliquez sur le bouton « Java Library » sur la page de type d'application

Sélectionner le fichier jar/war à chiffrer

Sélectionnez les fichiers jar/war que vous souhaitez chiffrer, vous pouvez sélectionner un ou plusieurs fichiers

Spécifier la méthode à chiffrer

Sur cette page, vous pouvez sélectionner la méthode à chiffrer

image-20241222111100288

Vous pouvez sélectionner les classes et méthodes nécessitant une protection depuis l'arborescence de structure à droite, ou vous pouvez saisir manuellement les éléments nécessitant une protection dans le format suivant.

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

Vous pouvez saisir le contenu à exclure dans les éléments à exclure en utilisant le même format.

Protéger les bibliothèques Java avec l'outil CLI

Fichier de configuration

L'outil CLI nécessite de spécifier un fichier de tâche en paramètre.

Accédez au dossier protector4j/task-templates, trouvez java-lib-task.yml, copiez-le et modifiez-le.

# 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

Exécuter la tâche de chiffrement

Accédez au dossier Protector4J et exécutez la commande suivante.

Linux ou macOS

Pour les utilisateurs macOS, vous pouvez trouver l'outil CLI dans /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

Vous pouvez exécuter p4j --help pour afficher les paramètres détaillés.

Résultat du chiffrement

Contrairement au chiffrement global des applications Java, le chiffrement des bibliothèques Java cible des méthodes spécifiques. Une fois le chiffrement terminé, la méthode que vous avez sélectionnée sera convertie en code natif, qui peut être utilisé conjointement avec un JRE standard. Si les utilisateurs souhaitent le craquer, ils doivent le faire au niveau binaire plutôt qu'au niveau bytecode, ce qui augmente considérablement la difficulté du craquage.

Avant le chiffrement

image-20250204115631030

Après le chiffrement

image-20250204115731661

Après le chiffrement, la méthode Main est convertie en méthode native.

Limitations

  1. Ne supporte pas les blocs de code try-catch.
  2. Ne supporte pas les fichiers jar empaquetés par Spring Boot.
  3. Ne supporte pas les fichiers war.

Application de démonstration

Actuellement, la fonction de chiffrement de bibliothèque Java ne supporte pas l'essai gratuit pour les utilisateurs. Vous pouvez télécharger cette application de démonstration pour voir l'effet du chiffrement de bibliothèque Java. Il s'agit d'un programme Swing, vous pouvez utiliser java -jar swingapp.jar pour l'exécuter. Sa fonction principale est convertie en méthode native, vous pouvez utiliser un outil de décompilation pour vérification !

Application non chiffrée

swing-plain.jar

Application chiffrée

swing-encrypted.jar