¿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 de Java para ver cómo el compilador optimiza ciertas cosas.
java
decompiler
Dormir
fuente
fuente
Respuestas:
Actualización de febrero de 2016:
www.javadecompilers.com enumera a JAD como:
Por lo tanto, su kilometraje puede variar con jdk reciente (7, 8).
El mismo sitio enumera otras herramientas.
Y javadecompiler, como señaló Salvador Valencia en los comentarios (septiembre de 2017), ofrece un SaaS donde carga el
.class
archivo en la nube y le devuelve el código descompilado.Respuesta original: octubre de 2008
Java Decompiler (Sin embargo, otro descompilador Fast Java) tiene:
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 realmente totalmente funcional. Simplemente puede soltar un archivo jar en la página y ver el código fuente descompilado sin instalar nada.
fuente
Hay algunos descompiladores por ahí ... Una búsqueda rápida produce:
Y muchos más.
Estos producen código Java. Java viene con algo que le permite ver el código de bytes JVM ( javap ).
fuente
Para ver el código fuente de Java, consulte algún descompilador. Ir a buscar a jad .
Si desea ver los códigos de bytes, simplemente use javap que viene con el JDK.
fuente
Probé varios, y Procyon parecía funcionar mejor para mí. Está en desarrollo activo y admite muchas características de las últimas versiones de Java.
Estos son los otros que probé:
-skip
indicador de línea de comandos para que no se detuviera en los errores. Desarrollado activamente, y curiosamente está escrito en Python.fuente
IGNORE_EXCEPTIONS
cosa ahora se ha cambiado a la bandera de línea de comando-skip
.Yo uso JAD Decompiler .
Hay un complemento de Eclipse para él, jadeclipse . Es muy lindo
fuente
Procyon incluye un descompilador. Es FOSS.
fuente
Hollín es una opción para el código Java más nuevo. Al menos tiene la ventaja de que aún se mantiene recientemente ...
Además, Java Decompiler es un descompilador con una GUI independiente y una integración de Eclipse.
Por último, no se ha mencionado a Jdec , aunque no está tan pulido como otras opciones.
fuente
JD-GUI es realmente bueno. Simplemente puede abrir un archivo JAR y examinar el código como si estuviera trabajando en un IDE. Buen material.
fuente
Aquí hay una lista de descompiladores a partir de febrero de 2015:
Procyon , de código abierto, 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 , de código abierto, https://github.com/fesh0r/fernflower ,
JAD : dado aquí solo por razones históricas. Gratis, sin código fuente disponible, http://varaneckas.com/jad/ Desactualizado, no compatible y no descompila correctamente Java 5 y versiones posteriores.
Puede probar los descompiladores mencionados anteriormente en línea, no requiere instalación y hacer su propia elección informada.
Descompiladores de Java en la nube: http://www.javadecompilers.com/
fuente
Hay algunos programas que puedes usar. Obtendrá el código Java real, pero a veces el código se habrá ofuscado, por lo que los métodos se nombran con una letra o número o una combinación aleatoria de letras y números.
DJ Decompiler Mocha
fuente
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 1.5+ clases.
fuente
Echa un vistazo a cavaj .
fuente
jad
debajo.Todos los enlaces JAD enumerados hasta ahora parecen estar rotos, así que encontré este sitio. ¡Funciona muy bien (al menos para Linux)! En Ubuntu 11.10 tuve que descargar el estático por cualquier razón.
http://www.varaneckas.com/jad
fuente
JAD es uno que funciona y es simple.
Además, si solo desea ver los métodos, use javap.
fuente
Si desea ver cómo el compilador de Java hace ciertas cosas, no desea la descompilación, desea el desmontaje. La descompilación implica transformar el bytecode en fuente 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 información que le interesa.
De todos modos, resultó que escribí 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 también están haciendo en sus clases. También puede descompilar, aunque no lo recomendaría.
fuente
JAD no funciona para mí (problema de Ubuntu 11.10), así que avancé y me metí en JODO . Al menos tiene código fuente Open Java y ha podido descompilar mi clase correctamente.
Recomiendo revisar la rama 'sucursales / genérico' primero. Los troncos no son estables.
fuente
En la plataforma IntelliJ IDEA puede usar el Decompiler IntelliJ Plugin de Java . Le permite mostrar todas las fuentes de Java durante su proceso de depuración, incluso si no las tiene todas. Se basa en las famosas herramientas JD-GUI .
fuente
Con AndroChef Java Decompiler puedes descompilar archivos de clase apk, dex, jar y java. Es simple y fácil. AndroChef JD está basado en FernFlower . Puede evaluarlo en 10 usos gratuitos.
fuente
Para OSX recomiendo: jarzilla o JD-GUI
Ambos le permiten ver jar, guerra, etc. contenido del archivo y descompila cualquier archivo de clase dentro de ellos.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
fuente