¿Cómo descompilar un archivo Jar completo? [cerrado]

Resuelto StoneHeart asked hace 15 años • 8 respuestas

¿Alguien conoce un descompilador gratuito que pueda descompilar un archivo Jar completo en lugar de una sola clase? Tengo un problema con subclases como nombre$1.clase nombre$2.clase nombre.clase

StoneHeart avatar Mar 15 '09 09:03 StoneHeart
Aceptado

2023: Splashout sugiere en los comentarios el Vineflower/vineflowerdescompilador ( lanzamientos ), cambiando el nombre de Quiltflower a Vineflower.

java -jar vineflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\souce

Actualización de 2022: QuiltMC/quiltflower es el último descompilador de Java más avanzado :

Quiltflower es un descompilador moderno de propósito general centrado en mejorar la calidad, la velocidad y la usabilidad del código.
Quiltflower es una bifurcación de Fernflower y Forgeflower.

Los cambios incluyen:

  • Nuevas funciones de lenguaje (pruebe con recursos, cambie de expresión, coincidencia de patrones y más)
  • Mejor generación de flujo de control (bucles, try-catch y switch, etc.)
  • Más configurabilidad
  • Mejores mensajes de error
  • aplicación javadoc
  • subprocesos múltiples
  • Mejoramiento
  • Muchas otras funciones y correcciones diversas

Originalmente diseñado solo para usarse con la cadena de herramientas QuiltMC con Minecraft, Quiltflower se expandió rápidamente para convertirse en un descompilador de Java de propósito general con el objetivo de crear código que sea lo más preciso y limpio posible.

Si el nombre le suena familiar es porque Quiltflower es una bifurcación de Fernflower , el (in)famoso descompilador desarrollado por Stiver, mantenido por Jetbrains y que se convirtió en el descompilador predeterminado en Intellij IDEA.
Fernflower también encontró rápidamente su camino hacia muchas otras herramientas.

Durante el año pasado, Quiltflower agregó soporte para funciones como la concatenación de cadenas moderna, un formateador de código, clases selladas, coincidencia de patrones, expresiones de cambio, prueba con recursos y más. Quiltflower también se centra en la calidad del código del resultado descompilado y se toma muy en serio la legibilidad.

Ver ejemplos de resultados .

Funciona bien con jbang

https://github.com/QuiltMC/quiltflower/releases/download/1.8.1/quiltflower-1.8.1.jar

O:

java -jar quiltflower.jar -dgs=1 c:\Temp\binary\library.jar c:\Temp\binary\Boot.class c:\Temp\source\

2009: JavaDecompiler puede hacer un buen trabajo con un jar: desde 0.2.5, se muestran todos los archivos, en archivos JAR.

http://java.decompiler.free.fr/sites/default/screenshots/screenshot1.png

Consulte también la pregunta "¿Cómo puedo “descompilar” archivos de clase Java?" .

Sin embargo, el JD-Eclipse no parece haber cambiado desde finales de 2009 (ver Cambios ).
Por lo tanto, su integración con la última versión de Eclipse (3.8, 4.2+) podría resultar problemática.

JD-Core se mantiene activamente.

Ambos son el resultado del fantástico trabajo de (usuario de SO) Emmanuel Dupuy .


2018: Una opción más moderna, mencionada en los comentarios de David Kennedy Araujo :

JetBrains/intellij-community/plugins/java-decompiler/motor

Fernflower es el primer descompilador analítico que realmente funciona para Java y probablemente para un lenguaje de programación de alto nivel en general.

java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination>

java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\

Consulte también Cómo descompilar en archivos java intellij idea para obtener un comando que funcione con IntelliJ IDEA reciente.


Actualización 2022: Florian Wendelborn sugiere en los comentarios

éste funciona bien: jdec.app de Leonardo Santos .

VonC avatar Mar 15 '2009 02:03 VonC

En primer lugar, vale la pena recordar que todos los archivos Java ( .jar/ .war/etc...) son básicamente .ziparchivos sofisticados , con algunos manifiestos y metadatos agregados.

En segundo lugar, para abordar este problema, personalmente utilizo varias herramientas que manejan este problema en todos los niveles:

  • Jad + Jadclipse mientras trabaja en IDE para descompilar.classarchivos
  • WinRAR, my favorite compression tool natively supports Java archives (again, see first paragraph).
  • Beyond Compare, my favorite diff tool, when configured correctly can do on-the-fly comparisons between any archive file, including jars. Well worth a try.

The advantage of all the aforementioned, is that I do not need to hold any other external tool which clutters my work environment. Everything I will ever need from one of those files can be handled inside my IDE or diffed with other files natively.

Yuval Adam avatar Mar 15 '2009 09:03 Yuval Adam