19 Pregunta: ¿Cómo puedo "descompilar" archivos de clase Java? [cerrado]

pregunta creada en Fri, Aug 9, 2013 12:00 AM

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

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

    
556
  1. El arte de "descompilar" también se puede considerar como ingeniería inversa. Aunque a veces, cuando se realiza ingeniería inversa, no siempre se tiene acceso a binarios.
    2009-06-13 10: 53: 08Z
  2. Nadie mencionó bytecodeviewer.com , que puede descompilar a la fuente de Java y al código de bytes (para la fuente de Java se basa en JAD).
    2018-01-08 16: 32: 44Z
19 Respuestas                              19                         

Actualización de febrero de 2016:

www.javadecompilers.com enumera JAD como:

  

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

Por lo tanto, su millaje puede variar con el jdk reciente (7, 8).

El mismo sitio enumera otras herramientas.

Y javadecompiler, como lo señala Salvador Valencia en the comments (septiembre de 2017), ofrece un SaaS donde subes el archivo .class a la nube y vuelve. Eres el código descompilado.


Respuesta original: octubre de 2008

  • La versión final de JSR 176, que define las características principales de J2SE 5.0 (Java SE 5), se publicó el 30 de septiembre de 2004.
  • La última versión de Java admitida 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 desde Internet, como "DJ Java Decompiler" o "Cavaj Java Decompiler", funcionan con JAD: no pueden mostrar las fuentes de Java 5.

Descompilador de Java (Otro descompilador de Java rápido) tiene:

  • Soporte explícito para descompilar y analizar archivos de ".class" de Java 5+ .
  • Una bonita interfaz gráfica de usuario:

screenshot

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

¡Cuenta con una versión de demostración en vivo en línea que es completamente funcional! Solo puede colocar un archivo jar en la página y ver el código fuente descompilado sin instalar nada.

    
588
2017-09-15 21: 45: 21Z
  1. + 1 Vale la pena mencionar que también está modularizado, por lo que el núcleo (implementado en C ++) se puede aprovechar en otro lugar.
    2010-05-05 04: 02: 28Z
  2. jd-gui-0.3.3 también está disponible here
    2012-07-03 07: 55: 16Z
  3. En el caso de que uno instaló el plugin Eclipse java decompiler en Eclipse Juno, y Eclipse comenzó a colgar en Marketplace DND Initialization forzando a matar todo el proceso: eliminando el jd. *. jar del directorio de plugins de Eclipse, simplemente me lo arregló.
    2013-02-24 12: 12: 31Z
  4. @ Rishi de la misma manera que protege su IP en cualquier idioma o plataforma: buenos abogados. DRM es solo una bandaid.
    2013-06-15 19: 26: 19Z
  5. Ahora ofrece SaaS donde carga el archivo .class a la nube y le devuelve el código descompilado. Trabajó para un simple POJO.
    2017-09-15 20: 43: 24Z

Hay algunos descompiladores por ahí ... Una búsqueda rápida da como resultado:

  1. Procyon : código abierto (Apache 2) y desarrollado activamente
  2. Krakatau : código abierto (GPLv3) y desarrollado activamente
  3. CFR : código abierto (MIT) y desarrollado activamente
  4. JAD
  5. DJ Java Decompiler
  6. Mocha

Y muchos más.

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

    
101
2016-11-07 15: 39: 35Z
  1. También puedo agregar que Procyon, CFR, JAD y DJ están disponibles como servicio web: javadecompilers.com
    2015-12-12 11: 21: 33Z
  2. javadecompilers.com - ¡salvavidas bro!
    2016-02-08 20: 50: 40Z
  3. kpdus.com/jad.html es un enlace AD ​​
    2016-11-07 15: 15: 05Z
  4. Gracias @marcinj, encontré otro enlace que tiene enlaces para descargarlo.
    2016-11-07 15: 37: 54Z

Para ver el código fuente de Java, compruebe algunos descompilador. Ve a buscar jad .

Si desea ver los códigos de bytes, solo use javap que viene con el JDK.

    
51
2008-11-07 16: 03: 51Z
  1. En su lugar, recomendaría uno de los descompiladores de código abierto, ya que están desarrollados activamente. Utilice Procyon , CFR decompiler o Krakatau (Python) en su lugar.
    2013-08-22 11: 26: 40Z

Probé varios, y Procyon pareció funcionar mejor para mí. Está en desarrollo activo y es compatible con muchas características de las últimas versiones de Java.

Estos son los otros que probé:

29
2014-12-22 16: 00: 27Z
  1. intente krakatau también
    2013-10-03 16: 46: 09Z
  2. Tenga en cuenta que la cosa IGNORE_EXCEPTIONS ahora se ha cambiado al indicador de línea de comando -skip.
    2014-11-30 04: 12: 03Z

Uso JAD Decompiler .

Hay un Eclipse para ello, jadeclipse . Es muy bonito.

    
18
2016-07-15 13: 21: 08Z

Procyon incluye un descompilador. Es FOSS.

    
14
2013-06-10 14: 02: 51Z

Soot es una opción para el código Java más nuevo. Al menos tiene la ventaja de que todavía se mantiene recientemente ...

También, Java Decompiler es un decompilador con una versión solo GUI y la integración de Eclipse.

Por último, Jdec no se ha mencionado, aunque no está tan pulido. como otras opciones.

    
13
2009-09-18 23: 59: 11Z
  1. ¿Sabes cómo descompilar un archivo de clase concreto con Soot? No estoy seguro de que sea posible ...
    2013-06-10 14: 01: 43Z

JD-GUI es realmente bueno. Solo puede abrir un archivo JAR y examinar el código como si yEstás trabajando en un IDE. Buenas cosas.

    
13
2014-02-23 16: 38: 21Z

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

Procyon , código abierto, https: //bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler

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

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

Fernflower , código abierto, https://github.com/fesh0r/fernflower ,

JAD : se proporciona aquí solo por razones históricas. Gratis, no hay código fuente disponible, http://varaneckas.com/jad/ Desactualizado, no es compatible y no descompila correctamente Java 5 y versiones posteriores.

Usted puede probar en línea los descompiladores mencionados anteriormente, no requiere instalación y hacer su propia elección educada.

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

    
11
2017-12-24 11: 19: 51Z
  1. Procyon funciona mejor !!!!
    2016-02-08 20: 52: 05Z

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

DJ Decompiler Mocha

    
10
2014-11-19 18: 21: 45Z

La mayoría de los descompiladores para Java se basan en JAD . Es una gran herramienta, pero desafortunadamente no se ha actualizado por un tiempo y no maneja muy bien las clases de Java 1.5+. No he visto ninguna herramienta que maneje adecuadamente más de 1.5 clases.

    
9
2008-11-07 16: 18: 26Z
  1. aquí tienes: acabo de publicar una respuesta a tu respuesta;) ¡JDK1.5 y más!
    2008-11-07 16: 19: 16Z
  2. "No he visto ninguna herramienta que maneje correctamente más de 1.5 clases" - Procion, Fernflower, JDCore y CFR (¡esta maneja Java 8!)
    2015-08-11 15: 56: 41Z

Eche un vistazo a cavaj .

    
6
2008-11-07 16: 02: 55Z
  1. Eso también usa jad debajo.
    2009-09-18 23: 47: 16Z

Todos los enlaces JAD listados hasta ahora parecen estar rotos, así que encontré este sitio. Funciona muy bien (para Linux, al menos)! En Ubuntu 11.10 tuve que descargar la estática por cualquier razón.

http://www.varaneckas.com/jad

    
6
2012-04-04 03: 11: 15Z
  • JAD es uno que funciona y es simple.

  • Además, si solo quieres ver los métodos, usa javap.

5
2011-03-13 05: 41: 45Z

Si desea ver cómo el compilador de Java hace ciertas cosas, no quiere descompilar, quiere desensamblar. La descompilación implica transformar el código de bytes en la fuente de Java, lo que significa que se pierde mucha información de bajo nivel, y si se está preguntando acerca de la optimización del compilador, esta es probablemente la misma información que le interesa.

De todos modos, he escrito un desensamblador Java de código abierto . A diferencia de Javap, esto funciona incluso en clases altamente patológicas, por lo que puede ver qué herramientas de ofuscación están haciendo con sus clases también. También puede hacer descompilación, aunque no lo recomendaría.

    
5
2012-11-30 03: 13: 59Z

JAD no funciona para mí (problema con Ubuntu 11.10), así que he avanzado y soplado en JODO . Al menos tiene el código fuente de Open Java y ha podido descompilar correctamente mi .class .

Recomiendo revisar primero 'sucursales /genérico' . Los troncos no son estables.

    
4
2013-06-25 17: 52: 07Z
  1. JODO es se mantiene de forma esporádica , mientras que CFR y Procyon se desarrollan activamente y tienen soporte JDK 8.
    2013-08-22 11: 30: 50Z

En la plataforma IntelliJ IDEA puede usar Complemento IntelliJ de Java Decompiler . Le permite mostrar todas las fuentes Java durante su proceso de depuración, incluso si no las tiene todas. Se basa en las famosas herramientas JD-GUI .

 ingrese la descripción de la imagen aquí

    
4
2015-10-23 08: 36: 03Z
  1. @ NoOP's ¿Eres un robot? ¿O simplemente no está prestando atención a un tema de revisión?
    2015-10-23 06: 38: 18Z
  2. Lo siento, a primera vista parece que el enlace solo responde. Tal vez debería agregar más detalles y también su respuesta solo cumple con el título de la pregunta y no con el contenido de la pregunta.
    2015-10-23 07: 15: 46Z
  3. Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración a un autor, deje un comentario debajo de su publicación.
    2015-10-23 07: 39: 18Z
  4. @ Chris, ¿has probado la solución sugerida? ¿Has leído la pregunta ?
    2015-10-23 08: 11: 42Z
  5. @ NoOP se disculpa por ser grosero = (Estoy abrumado por la cantidad de revisores que no prestan atención.
    2015-10-23 08: 42: 05Z

Con AndroChef Java Decompiler puede descompilar archivos de clase apk, dex, jar y java. Es simple y fácil. AndroChef JD se basa en FernFlower . Puedes evaluarlo en 10 usos libres.

  

AndroChef admite funciones de lenguaje Java como genéricos, enumeraciones y anotaciones. Según algunos estudios, AndroChef Java Decompiler puede descompilar el 98.04% de las aplicaciones Java generadas con compiladores Java tradicionales, una tasa de recuperación muy alta. Es una herramienta simple pero poderosa que le permite descompilar Java y Dalvik bytecode (DEX, APK) en una fuente de Java legible.

    
1
2015-10-23 08: 44: 20Z
  1. @ Dimitrius, lea atentamente las respuestas durante una revisión. ¿Cómo te imaginas incluir un FernFlower o AndroChef aquí?
    2015-10-22 16: 28: 04Z

Para OSX recomiendo: jarzilla o JD-GUI

Ambos te permiten ver jar, war, etc. archiva el contenido y descompila cualquier archivo de clase dentro de ellos.

Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/

    
1
2017-02-02 16: 01: 12Z
fuente colocada aquí