logo

Descompilador de Java

Un descompilador de Java es un tipo especial de descompilador que toma un archivo de clase como entrada y produce código fuente de Java como salida. La descompilación es exactamente el proceso inverso a la compilación. Por tanto, el descompilador no produce una réplica del código fuente. Esto se debe a que se perdió un poco de información del código fuente durante la compilación del programa.

Pero hay muchas complejidades, por ejemplo, el código Java está estructurado y el código de bytes no está estructurado. Además, la transformación no es uno a uno: dos programas Java diferentes pueden producir un código de bytes idéntico.

Hay los siguientes descompiladores de Java disponibles:

ssh forma completa
  • Descompilador DJ Java
  • JReversePro
  • JUDÍOS
  • JD-CORE/JD-GUI/JD Eclipse

Descompilador JAD

JAD es una aplicación de línea de comandos. Está escrito en C++. La función principal es desmontar los archivos .class. JAD se puede implementar desde la consola y descompilará las clases de Java en el código fuente. De esta manera, los desarrolladores pueden profundizar en el código de las bibliotecas de tiempo de ejecución de Java e incluso embellecer las líneas, preparándolas para una recompilación. Existe el riesgo de sobrescribir los archivos de código fuente, especialmente cuando se utiliza el parámetro '-o' (sobrescribir archivos de salida sin confirmación).

Ejemplo

Creemos un programa Java simple que sume dos números.

 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); } } 

Siga los pasos para convertir el .class en código fuente Java legible. Aquí estamos usando el descompilador JAD.

Paso 1: Descargue la herramienta JAD desde https://bit.ly/2XuRzT5

Paso 2: Extraiga el archivo zip y obtenga jad.exe.

Descompilador de Java

Paso 3: Cree un archivo .java (DecompilerDemo.java) en la misma carpeta en la que extrajo el archivo zip.

Etapa 4: Compile y ejecute el archivo .java. Generará un archivo .class en la carpeta respectiva.

Descompilador Java2

Paso 5: Ahora mueva el archivo .class y la aplicación jad a otra carpeta.

Descompilador de Java3

Paso 6: Escriba el comando: jad DecompilerDemostración

Descompilador de Java4

El comando anterior genera un archivo .jad en la carpeta respectiva.

Descompilador de Java5

Paso 7: Escriba el comando: jad ?s java DecompilerDemo

si no si no si java
Descompilador de Java6

Genera el archivo .java en la misma carpeta.

Descompilador de Java7

Abra DecompilerDemo.java y obtenemos el siguiente código:

 // 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()); } } 

Podemos observar que el archivo .java escrito es diferente del archivo .java generado pero da el mismo resultado.

Desensamblador de archivos de clase Java

Comando javap

El javap es una herramienta de línea de comandos de Java que viene con JDK. Se utiliza para desmontar el archivo de clase e imprime una versión legible por humanos de esa clase. Su salida depende de la opción utilizada. Sin utilizar ninguna opción, javap imprime el paquete, los campos públicos y protegidos y los métodos de las clases que se le pasan. A javap También se utiliza para averiguar qué métodos están disponibles para una clase si no se tiene el código fuente que se utilizó para crear la clase. El formato general del comando javap es:

 javap [options] filename 

Opciones

Con el comando javap, hay muchas opciones disponibles. Algunos de ellos son:

    -C:Imprime código desensamblado.-pag:Muestra todas las clases y miembros.-s:Imprime firmas tipográficas internas.-constantes:Muestra constantes finales estáticas.

Desensamblar un archivo de clase usando el comando javap

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

Genere el archivo de clase del programa anterior y use el siguiente comando para desmontar el archivo de clase.

 javap -c -p DisassembleDemo 

Producción

El siguiente resultado muestra lo que tiene el archivo de clase dentro.

Descompilador de Java8

Pero no obtenemos el código fuente de Java utilizando el comando javap. Por tanto, hay muchos descompiladores disponibles que convierten un archivo .class en un archivo .java.