Domanda

Sto cercando di capire cosa sta facendo il file di classe di un'applet Java sotto il cofano.Aprendolo con Blocco note o Blocco di testo mostra solo un mucchio di sciocchezze.

C'è un modo per riportarlo in un formato abbastanza leggibile in modo da poter provare a capire cosa sta facendo?

  • Ambiente == Windows con VS 2008 installato.
È stato utile?

Soluzione

jd-gui è il miglior decompilatore al momento.può gestire funzionalità più recenti in Java, rispetto al JAD sempre più polveroso.

Altri suggerimenti

Se non ti dispiace leggere il bytecode, javap dovrebbe funzionare bene.Fa parte dell'installazione JDK standard.

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

Se vuoi un decompilatore Java, puoi utilizzare lo strumento da riga di comando javap per fare questo.Anche, Istruzioni per la decompilazione Java descrive come decompilare un file di classe.

quello che stai cercando è un decompilatore Java.Raccomando JAD http://www.kpdus.com/jad.html È gratuito per uso non commerciale e porta a termine il lavoro.

Nota:questo non renderà il codice esattamente uguale a quello che è stato scritto.cioè.perderai commenti e forse nomi di variabili, quindi sarà un po' più difficile che leggere semplicemente il normale codice sorgente.Se lo sviluppatore è davvero riservato, avrà offuscato anche il proprio codice, rendendolo ancora più difficile da leggere.

cpuguru, se la tua applet è stata compilata con javac 1.3 (o inferiore), la soluzione migliore è utilizzare Jad.

Sfortunatamente, l'ultimo JDK supportato da JAD 1.5.8 (14 aprile 2001) è JDK 1.3.

Se la tua applet è stata compilata con un compilatore più recente, potresti provare JD-GUI :questo decompilatore è in fase di sviluppo, tuttavia, genera sorgenti Java corretti, la maggior parte delle volte, per le classi compilate con JDK 1.4, 1.5 o 1.6.

DarenW, grazie per il tuo post.JD-GUI non è ancora il miglior decompilatore...ma ci sto lavorando :)

Come sottolineato da @MichaelMyers, usa

javap -c <name of java class file> 

per ottenere il codice assembly JVM.Puoi anche reindirizzare l'output in un file di testo per una migliore visibilità.

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

Utilizzando Jad decompilarlo è probabilmente la soluzione migliore.A meno che il codice non sia stato offuscato, produrrà un risultato accettabile.

Questo è codice compilato, dovrai utilizzare un decompilatore come JAD: http://www.kpdus.com/jad.html

È necessario utilizzare un decompilatore.Altri hanno suggerito JAD, ci sono altre opzioni, JAD è la migliore.

Farò eco ai commenti che potresti perdere un po' rispetto al codice sorgente originale.Sembrerebbe particolarmente divertente se il codice utilizzasse codici generici, a causa della cancellazione.

Sicuramente il plugin JAD e/o JADclipse Eclipse.

Se il file di classe che desideri esaminare è open source, non dovresti decompilarlo, ma allegare invece i file sorgente direttamente al tuo IDE.in questo modo, puoi semplicemente visualizzare il codice di qualche classe della libreria come se fosse la tua

jd-gui "http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=" è l'opzione migliore e facile da usare per decompilare il file .class....

Come suggerito puoi usare JAD per decompilarlo e visualizzare i file.Per facilitarne la lettura puoi usare il plugin JADclipse per eclipse per integrare JAD direttamente in eclipse o usare DJ Java Decompiler che è molto più facile da usare rispetto a JAD a riga di comando

JAD è un'opzione eccellente se desideri come risultato un codice Java leggibile.Se vuoi davvero scavare all'interno del .class formato di file, però, lo vorrai javap.È fornito in bundle con JDK e consente di "decompilare" il bytecode esadecimale in ASCII leggibile.Il linguaggio che produce è ancora bytecode (non qualcosa come Java), ma è abbastanza leggibile ed estremamente istruttivo.

Inoltre, se tu Veramente vuoi, puoi aprirne qualsiasi .class file in un editor esadecimale e leggi direttamente il bytecode.Il risultato è identico all'utilizzo javap.

Non è necessario decompilare Applet.class.Il codice sorgente delle classi API Java pubbliche viene fornito con JDK (se si sceglie di installarlo) ed è meglio leggibile rispetto al bytecode decompilato.Puoi trovarlo compresso in src.zip (situato nella cartella di installazione di JDK).

CFR - un altro decompilatore Java è un ottimo decompilatore per Java moderno scritto in Java 6.

puoi anche utilizzare i decompilatori Java online disponibili.Per es. http://www.javadecompilers.com

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top