Protéger la bibliothèque Java

Protégez la bibliothèque Java avec l'outil GUI

Allez dans le dossier Protector4J, exécutez p4j-ui[.exe], vous verrez l'interface utilisateur suivante.

image-20241222183944773

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

Se connecter

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 d'utilisateur. Si vous n'avez pas de licence, vous pouvez toujours essayer cet outil.

La fonctionnalité de protection de la bibliothèque Java nécessite l'édition Enterprise.

Type d'application de sélection

Cliquez sur le bouton « Bibliothèque Java » sur la page du type d'application

Sélectionnez le fichier jar/war qui doit être crypté

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

Spécifiez la méthode de cryptage

Sur cette page, vous pouvez sélectionner la méthode de cryptage

image-20241222111100288

Vous pouvez sélectionner les classes et les méthodes qui nécessitent une protection à partir du répertoire de structure sur la droite, ou vous pouvez saisir manuellement les éléments qui nécessitent 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égez la bibliothèque Java avec l'outil CLI

Fichier de configuration

L'outil CLI doit spécifier un fichier de tâche comme paramètre.

Aller à la protector4j/task-templates dossier, trouver java-lib-task.yml, copier et modifier un.

# 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 de macOS, vous pouvez trouver l&#39;outil CLI à l&#39;adresse /Applictions/Protector4J.app/Contents/protector4j-mac.

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

Fenêtres

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

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

Le résultat du cryptage

Contrairement au chiffrement global des applications Java, le chiffrement de la bibliothèque 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 doivent le déchiffrer, ils doivent le faire au niveau binaire plutôt qu&#39;au niveau du bytecode, ce qui augmente considérablement la difficulté du déchiffrage.

Avant le cryptage

image-20250204115631030

Après le cryptage

image-20250204115731661

Une fois le chiffrement terminé, la méthode Main est convertie en méthode native.

Limites

  1. Ne prend pas en charge les blocs de code try-catch.
  2. Spring ne démarre pas les fichiers jar empaquetés.
  3. Ne fait pas de guerre aux fichiers

Application de démonstration

Actuellement, la fonction de cryptage de la bibliothèque Java ne prend pas en charge l&#39;essai utilisateur gratuit, vous pouvez télécharger cette application de démonstration pour voir l&#39;effet du cryptage de la bibliothèque Java, il s&#39;agit d&#39;un programme swingapp, vous pouvez l&#39;utiliser java -jar swingapp.jar pour l&#39;exécuter, sa fonction principale est convertie en méthode native, vous pouvez utiliser l&#39;outil de décompilation pour vérification !

Application non cryptée

swing-plain.jar

Application cryptée

swing-crypté.jar