Pregunta ¿Cómo "descompilo" los archivos de la clase Java? [cerrado]


¿Qué programa puedo usar para descompilar un archivo de clase? ¿Obtendré realmente el código Java, o es solo el código ensamblador JVM?

En las preguntas sobre el rendimiento de Java en este sitio, a menudo veo respuestas de personas que han "decompilado" el archivo de clase Java para ver cómo el compilador optimiza ciertas cosas.


556
2017-11-07 16:00


origen


Respuestas:


Actualización de febrero de 2016:

www.javadecompilers.com Enumera JAD como siendo:

el decompilador Java más popular, pero principalmente de esta edad solamente. Escrito en C ++, muy rápido.
  Anticuado, no compatible y no descompila correctamente Java 5 y posterior

Entonces su millaje puede variar con jdk reciente (7, 8).

El mismo sitio enumera otras herramientas.

Y javadecompiler, según lo observado por Salvador Valencia en los comentarios (Septiembre de 2017), ofrece un SaaS donde usted carga el .class archivo a la nube y te devuelve el código descompilado.


Respuesta original: octubre de 2008

  • El lanzamiento final de JSR 176, que define las principales características de J2SE 5.0 (Java SE 5), se publicó el 30 de septiembre de 2004.
  • La última versión de Java soportada por JAD, el famoso descompilador de Java escrito por el Sr. Pavel Kouznetsov, es JDK 1.3.
  • La mayoría de los descompiladores de Java que se pueden descargar hoy de Internet, como "DJ Java Decompiler" o "Cavaj Java Decompiler", funcionan con JAD: no pueden mostrar las fuentes de Java 5.

Descompilador de Java (Sin embargo, otro decompilador de Fast Java) tiene:

  • Soporte explícito para descompilar y analizar Java 5+ Archivos ".class".
  • Una buena GUI:

screenshot

Funciona con compiladores desde JDK 1.1.8 hasta JDK 1.7.0, y otros (Jikes, JRockit, etc.)

Cuenta con un en línea versión demo en vivo ¡eso es realmente completamente funcional! Puede simplemente colocar un archivo jar en la página y ver el código fuente descompilado sin instalar nada.


588
2017-11-07 16:18



Hay algunos decompiladores por ahí ... Una búsqueda rápida produce:

  1. Procyon: open-source (Apache 2) y desarrollado activamente
  2. Krakatau: open-source (GPLv3) y desarrollado activamente
  3. CFR: open-source (MIT) y desarrollado activamente
  4. JAD
  5. DJ Java Decompiler
  6. Moca

Y muchos más.

Estos producen código Java. Java viene con algo que le permite ver el código de bytes de JVM (javap)


101
2017-11-07 16:03



Para ver el código fuente de Java, verifique algún decompilador. Ir a buscar jad.

Si quieres ver códigos byte, solo usa javap que viene con el JDK.


51
2017-11-07 16:03



Intenté varios, y Procyon parecía funcionar lo mejor para mí. Está en desarrollo activo y admite muchas características de las últimas versiones de Java.

Estos son los otros que probé:

  • CFR
    • Descompilación de métodos prometedora, pero a menudo fallida. Estaré vigilando esta. También se desarrolló activamente con soporte para las últimas características de Java.
  • Krakatau
    • Tiene un enfoque diferente, ya que trata de generar un código Java equivalente en lugar de tratar de reconstruir la fuente original, lo que tiene el potencial de mejorar el código ofuscado. Según mis pruebas, estaba a la par de Procyon, pero aún así es bueno tener algo diferente. Tuve que usar el -skipindicador de línea de comando para que no se detenga en los errores. Desarrollado activamente, y curiosamente está escrito en Python.
  • JD-GUI
  • JAD
    • Funcionó, pero solo es compatible con Java 1.4 y versiones posteriores. También disponible como Plugin de Eclipse. Ya no está en desarrollo.

29
2017-10-02 19:00



yo suelo JAD Decompiler.

Hay un Eclipse complemento para ello, jadeclipse. Es bastante agradable.


18
2017-11-07 16:07



Procyon incluye un decompilador Es FOSS.


14
2018-06-10 14:02



Hollín es una opción para el código Java más nuevo. Al menos tiene la ventaja de ser mantenido recientemente ...

También, Descompilador de Java es un descompilador con una GUI independiente y una integración de Eclipse.

Finalmente, Jdec no se ha mencionado, aunque no está tan pulido como otras opciones.


13
2017-09-18 23:53



JD-GUI Es realmente bueno. Podrías simplemente abrir un TARRO archivar y navegar por el código como si estás trabajando en un IDE. Buen material.


13
2017-07-01 09:33



Aquí hay una lista de descompiladores a partir de febrero de 2015:

Procyon, fuente abierta, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler

CFR, gratis, sin código fuente disponible, http://www.benf.org/other/cfr/

JD, gratis solo para uso no comercial, http://jd.benow.ca/

Fernflower, fuente abierta, https://github.com/fesh0r/fernflower,

JAD - dado aquí solo por razones históricas. Gratis, sin código fuente disponible, http://varaneckas.com/jad/ Anticuado, no compatible y no descompila correctamente Java 5 y posterior.

Puede probar decompiladores mencionados anteriormente en línea, no requiere instalación y hacer su propia elección educada.

Descompiladores de Java en la nube:  http://www.javadecompilers.com/


11
2018-03-07 00:06



Hay algunos programas que puedes usar. Obtendrá el código de Java real, pero a veces el código se habrá ocultado de modo que los métodos se nombran por una letra o número o una combinación aleatoria de letras y números.

DJ Decompiler Moca


10
2017-11-07 16:04