¿Cómo descompilar un archivo Jar completo? [cerrado]
¿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
2023: Splashout sugiere en los comentarios el Vineflower/vineflower
descompilador ( 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.
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 .
En primer lugar, vale la pena recordar que todos los archivos Java ( .jar
/ .war
/etc...) son básicamente .zip
archivos 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
.class
archivos - 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
jar
s. 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.