Estoy tratando de averiguar qué está haciendo el archivo de clase de un subprograma de Java bajo el capó. Abrirlo con Notepad o Textpad solo muestra un montón de palabrería.
¿Hay alguna forma de volver a convertirlo en un formato algo legible para que pueda intentar averiguar qué está haciendo?
- Entorno == Windows con VS 2008 instalado.
Respuestas:
jd-gui es el mejor descompilador en este momento. puede manejar características más nuevas en Java, en comparación con el JAD cada vez más polvoriento.
fuente
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.
fuente
Como lo señaló @MichaelMyers, use
para obtener el código ensamblador de JVM. También puede redirigir la salida a un archivo de texto para una mejor visibilidad.
fuente
Si desea un descompilador de Java, puede usar la herramienta de línea de comandos
javap
para hacer esto. Además, Java Decompiler HOW-TO describe cómo se puede descompilar un archivo de clase.fuente
lo que busca es un de-compilador de Java. Recomiendo JAD http://www.kpdus.com/jad.html Es gratis para uso no comercial y hace el trabajo.
Nota: esto no hará que el código sea exactamente igual al que se escribió. es decir, perderá 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, lo que hará que sea aún más difícil de leer.
fuente
cpuguru, si su applet ha sido compilado con javac 1.3 (o menos), su mejor opción es usar Jad.
Desafortunadamente, el último JDK soportado por JAD 1.5.8 (14 de abril de 2001) es JDK 1.3.
Si su applet ha sido compilado con un compilador más reciente, puede probar 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 aún no es el mejor descompilador ... pero estoy trabajando :)
fuente
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 fácil de usar para descompilar .class expediente....
fuente
Usar Jad para descompilarlo es probablemente su mejor opción. A menos que el código se haya ofuscado, producirá un resultado aceptable.
fuente
Eso es código compilado, necesitará usar un descompilador como JAD: http://www.kpdus.com/jad.html
fuente
Necesitas usar un descompilador. Otros han sugerido JAD, hay otras opciones, JAD es la mejor.
Me haré eco de los comentarios que puede perder un poco en comparación con el código fuente original. Se verá especialmente divertido si el código usa genéricos, debido al borrado.
fuente
Complemento JAD y / o JADclipse Eclipse, seguro.
fuente
Si el archivo de clase que desea examinar es de código abierto, no debe descompilarlo, sino adjuntar los archivos de origen directamente en su IDE. de esa manera, puede ver el código de alguna clase de biblioteca como si fuera suyo
fuente
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 en eclipse o usar DJ Java Decompiler, que es mucho más fácil de usar que la línea de comandos JAD
fuente
JAD es una excelente opción si desea un código Java legible como resultado. Sin embargo, si realmente desea profundizar en los aspectos internos del
.class
formato de archivo, querrájavap
. Se incluye 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 (nada parecido a Java), pero es bastante legible y extremadamente instructivo.Además, si realmente lo desea, puede abrir cualquier
.class
archivo en un editor hexadecimal y leer el código de bytes directamente. El resultado es idéntico a usarjavap
.fuente
No es necesario descompilar Applet.class. El código fuente de las clases de API públicas 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).
fuente
CFR: otro descompilador de Java es un gran descompilador para Java moderno escrito en Java 6.
fuente
También puede utilizar los descompiladores de Java en línea disponibles. Por ejemplo, http://www.javadecompilers.com
fuente