Pregunta

Estoy tratando de descubrir qué hace el archivo de clase de un subprograma de Java en su interior.Abrirlo con el Bloc de notas o el Bloc de texto solo muestra un montón de palabrería.

¿Hay alguna forma de volver a colocarlo en un formato algo legible para poder intentar descubrir qué está haciendo?

  • Entorno == Windows con VS 2008 instalado.
¿Fue útil?

Solución

jd-gui es el mejor descompilador del momento.puede manejar funciones más nuevas en Java, en comparación con el polvoriento JAD.

Otros consejos

Si no le importa leer el código de bytes, javap debería funcionar bien.Es parte de la instalación estándar de JDK.

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure

Si desea un descompilador de Java, puede utilizar la herramienta de línea de comandos javap para hacer esto.También, Cómo hacerlo el descompilador de Java describe cómo se puede descompilar un archivo de clase.

Lo que buscas es un descompilador de Java.Recomiendo JAD http://www.kpdus.com/jad.html Es gratuito para uso no comercial y hace el trabajo.

Nota:esto no hará que el código sea exactamente igual a lo que se escribió.es decir.perderás comentarios y posiblemente nombres de variables, por lo que será un poco más difícil que simplemente leer el código fuente normal.Si el desarrollador es realmente reservado, también habrá ofuscado su código, haciéndolo aún más difícil de leer.

cpuguru, si tu subprograma ha sido compilado con javac 1.3 (o menos), tu mejor opción es usar Jad.

Lamentablemente, el último JDK compatible con JAD 1.5.8 (14 de abril de 2001) es el JDK 1.3.

Si su subprograma ha sido compilado con un compilador más reciente, puede intentar JD-GUI :Este descompilador está en desarrollo, sin embargo, genera fuentes Java correctas, la mayoría de las veces, para clases compiladas con los JDK 1.4, 1.5 o 1.6.

DarenW, gracias por tu publicación.JD-GUI no es el mejor descompilador todavía...pero estoy trabajando en :)

Como lo señaló @MichaelMyers, use

javap -c <name of java class file> 

para obtener el código ensamblador de JVM.También puede redirigir el resultado a un archivo de texto para una mejor visibilidad.

javap -c <name of java class file> > decompiled.txt

Usando jad descompilarlo es probablemente tu mejor opción.A menos que el código haya sido ofuscado, producirá un resultado correcto.

Ese es código compilado, necesitarás usar un descompilador como JAD: http://www.kpdus.com/jad.html

Necesitas usar un descompilador.Otros han sugerido JAD, hay otras opciones, JAD es la mejor.

Me haré eco de los comentarios que quizás se pierdan un poco respecto al código fuente original.Se verá especialmente divertido si el código usa genéricos, debido al borrado.

Complemento JAD y/o JADclipse Eclipse, seguro.

Si el archivo de clase que desea examinar es de código abierto, no debe descompilarlo, sino adjuntar los archivos de origen directamente a su IDE.de esa manera, puedes ver el código de alguna clase de biblioteca como si fuera tuyo

jd-gui "http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=" es la mejor opción y más fácil de usar para descompilar archivos .class....

Como se sugirió, puede usar JAD para descompilarlo y ver los archivos.Para que sea más fácil de leer, puede usar el complemento JADclipse para eclipse para integrar JAD directamente a eclipse o usar DJ Java Decompiler, que es mucho más fácil de usar que la línea de comandos JAD.

JAD es una excelente opción si desea obtener como resultado un código Java legible.Si realmente quieres profundizar en el interior del .class formato de archivo, querrás javap.Viene incluido con el JDK y le permite "descompilar" el código de bytes hexadecimal en ASCII legible.El lenguaje que produce sigue siendo código de bytes (no se parece en nada a Java), pero es bastante legible y extremadamente instructivo.

Además, si usted en realidad quieres, puedes abrir cualquier .class archivo en un editor hexadecimal y leer el código de bytes directamente.El resultado es idéntico al uso javap.

No es necesario descompilar Applet.class.El código fuente de las clases públicas de la API de Java viene con el JDK (si elige instalarlo) y es mejor legible que el código de bytes descompilado.Puede encontrarlo comprimido en src.zip (ubicado en su carpeta de instalación de JDK).

CFR: otro descompilador de Java es un gran descompilador para Java moderno escrito en Java 6.

También puede utilizar los descompiladores de Java en línea disponibles.Por ej. http://www.javadecompilers.com

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top