logo

Décompilateur Java

Un décompilateur Java est un type spécial de décompilateur qui prend un fichier de classe en entrée et produit du code source Java en sortie. La décompilation est exactement le processus inverse de la compilation. Ainsi, le décompilateur ne produit pas de réplique du code source. C'est à cause d'un peu d'informations perdues dans le code source lors de la compilation du programme.

Mais il existe de nombreuses complexités, par exemple, le code Java est structuré et le code octet n'est pas structuré. De plus, la transformation n’est pas une à une : deux programmes Java différents peuvent produire un byte code identique.

Les décompilateurs Java suivants sont disponibles :

  • Décompilateur DJ Java
  • JReversePro
  • LES JUIFS
  • JD-CORE/ JD-GUI/ JD Eclipse

Décompilateur JAD

Le JAD est une application en ligne de commande. Il est écrit en C++. La fonction principale est de désassembler les fichiers .class. JAD peut être déployé à partir de la console et décompilera les classes Java dans le code source. De cette façon, les développeurs peuvent approfondir le code des bibliothèques d'exécution Java et même embellir les lignes, les préparant pour une recompilation. Il existe un risque d'écrasement des fichiers de code source, en particulier lorsque le paramètre « -o » (écraser les fichiers de sortie sans confirmation) est utilisé.

Exemple

Créons un programme Java simple qui ajoute deux nombres.

 import java.util.*; class DecompilerDemo { public static void main(String args[]) { int a,b,c; Scanner sc=new Scanner(System.in); System.out.print('Enter the value of a: '); a=sc.nextInt(); System.out.print('Enter the value of b: '); b=sc.nextInt(); c=a+b; System.out.println('sum of a and b is: '+c); } } 

Suivez les étapes pour convertir le .class en code source Java lisible. Ici, nous utilisons le décompilateur JAD.

Étape 1: Téléchargez l'outil JAD depuis https://bit.ly/2XuRzT5

nom des caractères spéciaux

Étape 2: Extrayez le fichier zip et récupérez jad.exe.

Décompilateur Java

Étape 3: Créez un fichier .java (DecompilerDemo.java) dans le même dossier dans lequel vous avez extrait le fichier zip.

Étape 4: Compilez et exécutez le fichier .java. Il générera un fichier .class dans le dossier respectif.

Décompilateur Java2

Étape 5 : Déplacez maintenant le fichier .class et l'application jad vers un autre dossier.

Décompilateur Java3

Étape 6 : Tapez la commande : jad DecompilerDémo

Décompilateur Java4

La commande ci-dessus génère un fichier .jad dans le dossier respectif.

Décompilateur Java5

Étape 7 : Tapez la commande : jad ?s java DecompilerDemo

Décompilateur Java6

Il génère le fichier .java dans le même dossier.

Décompilateur Java7

Ouvrez le DecompilerDemo.java, nous obtenons le code suivant :

 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: DecompilerDemo.java import java.io.PrintStream; import java.util.Scanner; class DecompilerDemo { DecompilerDemo() { } public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print('Enter the value of a: '); int i = scanner.nextInt(); System.out.print('Enter the value of b: '); int j = scanner.nextInt(); int k = i + j; System.out.println((new StringBuilder()).append('sum of a and b is: ').append(k).toString()); } } 

Nous pouvons observer que le fichier .java écrit est différent du fichier .java généré mais donne le même résultat.

concaténation de chaînes java

Désassembleur de fichiers de classe Java

Commande javap

Le java est un outil de ligne de commande Java fourni avec JDK. Il est utilisé pour démonter le fichier de classe et imprimer une version lisible par l'homme de cette classe. Son résultat dépend de l'option utilisée. Sans utiliser aucune option, javap imprime le package, les champs protégés et publics et les méthodes des classes qui lui sont transmises. UN java est également utilisé pour savoir quelles méthodes sont disponibles pour une classe si vous ne disposez pas du code source qui a été utilisé pour créer la classe. Le format général de la commande javap est :

 javap [options] filename 

Possibilités

Avec la commande javap, de nombreuses options sont disponibles. Certains d'entre eux sont:

    -c :Il imprime le code démonté.-p :Il montre toutes les classes et tous les membres.-s :Il imprime les signatures de type internes.-constantes :Il montre les constantes finales statiques.

Désassembler un fichier de classe à l'aide de la commande javap

 class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } } 

Générez le fichier de classe du programme ci-dessus et utilisez la commande suivante pour désassembler le fichier de classe.

quel est 25 sur 100
 javap -c -p DisassembleDemo 

Sortir

La sortie suivante montre ce que contient le fichier de classe.

Décompilateur Java8

Mais nous n'obtenons pas le code source Java en utilisant la commande javap. Il existe donc de nombreux décompilateurs disponibles qui convertissent un fichier .class en fichier .java.