¿Cómo descomstackr un archivo Jar completo?

¿Alguien sabe de un descomstackdor gratuito que puede descomstackr un archivo jar completo en lugar de una sola clase? Tengo un problema con sub clases como nombre $ 1.class name $ 2.class name.class

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 descompilo” los archivos de la clase Java? .

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

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 decomstackdor analítico realmente funcional para Java y probablemente para un lenguaje de progtwigción de alto nivel en general.

java -jar fernflower.jar [- 

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

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

  • Jad + Jadclipse mientras trabajaba en IDE para descomstackr archivos .class
  • WinRAR , mi herramienta de compresión favorita, es compatible nativamente con los archivos de Java (de nuevo, vea el primer párrafo).
  • Más allá de Comparar , mi herramienta de diferencias favorita, cuando está configurada correctamente puede hacer comparaciones sobre la marcha entre cualquier archivo de archivo, incluidos jar s. Bien vale la pena intentarlo.

La ventaja de todo lo anterior es que no necesito tener ninguna otra herramienta externa que atempere mi entorno de trabajo. Todo lo que necesitaré de uno de esos archivos puede manejarse dentro de mi IDE o diferir con otros archivos de forma nativa.

Si tienes un shell de bash y jad:

 JAR=(your jar file name) unzip -d $JAR.tmp $JAR pushd $JAR.tmp for f in `find . -name '*.class'`; do jad -d $(dirname $f) -s java -lnc $f done popd 

Podría ser un poco, un poco fuera de eso, pero debería funcionar más o menos como se anuncia. Debería terminar con $JAR.tmp contiene sus archivos descomstackdos.

He tenido un éxito razonable con una herramienta llamada (frustrantemente) ” JD: Java Decompiler “.

Lo encontré mejor que la mayoría de los descomstackdores cuando se trata de clases comstackdas para Java 5 y posteriores . Desafortunadamente, todavía puede tener algunos contratiempos donde normalmente JAD tendría éxito.

Algo como:

 jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r 

¿tal vez?

Inserta lo siguiente en decompile.jar.sh

 # Usage: decompile.jar.sh some.jar [-d] # clean target folders function clean_target { rm -rf $unjar $src $jad_log } # clean all debug stuff function clean_stuff { rm -rf $unjar $jad_log } # the main function function work { jar=$1 unjar=`basename $jar.unjar` src=`basename $jar.src` jad_log=jad.log clean_target unzip -q $jar -d $unjar jad -d $src -ff -r -lnc -o -s java $unjar/**/*.class > $jad_log 2>&1 if [ ! $debug ]; then clean_stuff fi if [ -d $src ] then echo "$jar has been decompiled to $src" else echo "Got some problems check output or run in debug mode" fi } function usage { echo "This script extract and decompile JAR file" echo "Usage: $0 some.jar [-d]" echo " where: some.jar is the target to decompile" echo " use -d for debug mode" } # check params if [ -n "$1" ] then if [ "$2" == "-d" ]; then debug=true set -x fi work $1 else usage fi 
  • chmod + x decomplie.jar.sh // ejecutable
  • ln -s ./decomplie.jar.s / usr / bin / dj

Listo para usar, simplemente escriba dj your.jar y obtendrá su your.jar.src con las fonts. Use la opción -d para el modo de depuración.

Un archivo jar es solo un archivo zip con extensión jar. Debería poder descomprimir (winzip) un contenedor como un archivo zip.

Lo extraes y luego usas jad contra el directorio.

Nota: Esta solución solo funciona para usuarios de Mac y * nix.

También traté de encontrar a Jad sin suerte. Mi solución rápida fue descargar MacJad que contiene jad. Una vez que lo descargó, puede encontrar jad en [where-you-you-download-macjad] / MacJAD / Contents / Resources / jad.

    Intereting Posts