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.
É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.
Étape 5 : Déplacez maintenant le fichier .class et l'application jad vers un autre dossier.
Étape 6 : Tapez la commande : jad DecompilerDémo
La commande ci-dessus génère un fichier .jad dans le dossier respectif.
Étape 7 : Tapez la commande : jad ?s java DecompilerDemo
Il génère le fichier .java dans le même dossier.
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:
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.
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.