Descompilar clase Java
- Razones para descompilar una clase Java
- Descompilador de Java
- Descompilar la clase Java usando Eclipse IDE
- Descompilar la clase Java usando IntelliJ IDEA
- Descompilar la clase Java mediante la línea de comandos
- Descompilar la clase Java usando JD-GUI
En esta guía, aprenderemos sobre el arte de descompilar un archivo .class
de Java. Veremos una breve descripción general de la descompilación, cómo descompilamos un archivo .class
en Java y qué cambios podemos ver cuando descompilamos un archivo en Java.
Razones para descompilar una clase Java
Al menos una vez en su carrera como desarrolladores de Java, se encuentran con una situación en la que tienen que enfrentarse a archivos JAR o en la que tienen que descompilar un archivo .class
a un código fuente.
Como sabemos, los archivos JAR son un paquete de archivo Java con una colección de diferentes archivos de clase Java y otros recursos como imágenes, audio, etc. Estos archivos están creados en formato ZIP y usan la extensión .jar
.
El problema con los archivos JAR es que un usuario no tiene permiso para abrir este archivo. La única forma de acceder a estos archivos es si el usuario descompila el archivo JAR.
Para poder leer los archivos .class
en el archivo, tendremos que usar herramientas de software para descompilar este archivo.
Por otro lado, con archivos .class
podemos usar software como Eclipse IDE e IntelliJ IDEA. Además, los argumentos de la línea de comandos se pueden usar para descompilar un archivo .class
.
Descompilador de Java
La descompilación está bajo la acción de la ingeniería inversa, ya que estamos descompilando un archivo JAR en un archivo de clase legible. Aprenderemos sobre esto más adelante en esta guía, pero primero, echemos un vistazo a los archivos .class
.
Hay varias formas de descompilar un archivo .class
. Todo se reduce a lo que es más adecuado para el usuario que trabaja con estos archivos.
Hay herramientas de software que ayudan con este proceso, pero también hay otras formas en las que podemos descompilar un archivo .class
en nuestro código fuente. Dos de los métodos que estamos usando son software como Eclipse IDE e IntelliJ IDEA.
La ventaja más importante de usar estos dos es que los descompiladores son muy fáciles de usar. Veamos el software más utilizado, Eclipse IDE.
Hay algunos pasos que deberá seguir para esto.
Descompilar la clase Java usando Eclipse IDE
Se utiliza un complemento para descompilar un archivo .class
; en este software, el complemento se llama Descompilador de clase mejorado (ECD). Enhanced Class Decompiler se puede instalar fácilmente desde el mercado del software, llamado Eclipse Marketplace.
-
Para ello, iremos a la opción
Ir a ayuda
y seleccionaremosEclipse Marketplace
. -
Después de esto, busque
Descompilador de clase mejorado
. Después de esto, necesitamos configurar el ECD para que funcione correctamente. -
Para configurar el ECD, hacemos clic en la opción
Ir a la ventana
del menú y luego hacemos clic enPreferencias
. -
Luego selecciona
General
, donde encontrarás la opciónEditores
del desplegable. -
Después de hacer clic en la opción anterior, seleccione
Asociación de archivos
en otro menú desplegable. -
Luego, finalmente, seleccione la opción
*.class sin fuente
.
Ahora se puede descompilar un archivo .class
simplemente haciendo clic en él.
Descompilar la clase Java usando IntelliJ IDEA
La razón principal para usar este software es que no necesitamos descargar ni configurar un descompilador. Este software tiene un descompilador predeterminado, lo que facilita al usuario el uso de IntelliJ IDEA.
Todo lo que tenemos que hacer es abrir un archivo .class
en IntelliJ IDEA, que descompilará automáticamente ese archivo.
Descompilar la clase Java mediante la línea de comandos
Otro método para descompilar un archivo .class
es mediante la línea de comandos. Este método viene con tres opciones. Depende totalmente del usuario elegir.
Usar JD-CLI
JD-CLI se utiliza para sentencias de una sola línea de comandos. Solo se necesita un comando para descompilar un archivo de clase.
Este es el comando utilizado para descompilar un archivo de clase:
java - jar jd - cli.jar[class - file]
Podemos descargar este descompilador haciendo clic aquí: intoolswetrust/jd-cli: Command Line Java Decompiler (github.com).
Usar flor de helecho
FernFlower es otro descompilador descargado al sistema para descompilar un archivo .class
.
Tendríamos que clonar este descompilador para poder usar FernFlower. Lo hacemos haciendo clic aquí: fesh0r/fernflower: Espejo no oficial de FernFlower Java Decompiler (github.com).
Estos son los comandos usados para clonar:
git clone https: // github.com/fesh0r/fernflower
cd fernflower
gradle build
Para descompilar un archivo, use este comando.
java - jar fernflower.jar[path to JAR or.class file][directory to store the decompiled files]
Descompilar la clase Java usando JD-GUI
Descompilar un archivo JAR es diferente a un archivo .class
. El descompilador de Java es la herramienta de software más utilizada para descompilar un archivo JAR.
Esta herramienta se puede descargar fácilmente. Se pueden descargar diferentes versiones de este software según lo requiera el usuario haciendo clic aquí.
Entre estas versiones, JD-GUI es la versión de interfaz de usuario más conocida del descompilador de Java. JD-GUI es una aplicación que permitirá al usuario ver los archivos de clase ocultos en los archivos JAR.
Tenga en cuenta que la información de bajo nivel, como los comentarios en un archivo .class
, desaparecerá. También hay posibilidades de que desaparezcan algunos nombres de variables originales, pero eso depende de la opción que elija el usuario durante la compilación.
Si se usó un depurador durante la compilación, tenga la seguridad de que el archivo .class
estará en una forma más legible ya que no obtenemos el mismo código fuente.
Entendamos mejor este concepto con la ayuda de un ejemplo simple de Hola Mundo
usando comentarios.
class Example1 {
public static void main(String[] args) {
// This is the comment used.
System.out.println("Hello World");
}
}
Cuando descompilemos este archivo HelloWorld
que ahora mismo está en forma de archivo JAR, obtendremos este archivo .class
como salida.
Producción :
class Example1
{
public static void main(String[] paramArrayOfString){System.out.println("Hello World");}
}
Como puedes ver, la clara diferencia entre estos dos archivos es que los comentarios han desaparecido y el cambio visible en el parámetro del método principal
.
Al final, depende del usuario qué herramienta de software usar para descompilar un archivo JAR de Java, ya que hay muchas opciones.
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn