it-swarm-eu.dev

Jak mohu otevřít soubory Java .class způsobem čitelným pro člověka?

Snažím se přijít na to, co dělá soubor třídy Java appletu pod kapotou. Otevření s Poznámkový blok nebo Textpad jen ukazuje spoustu gobbledy-gook.

Existuje nějaký způsob, jak to vrátit do poněkud čitelného formátu, abych se mohl pokusit zjistit, co to dělá?

  • Prostředí == Windows w/VS 2008 nainstalován.
96
cpuguru

jd-gui je v současné době nejlepší dekompilátor. dokáže zvládnout novější funkce v Javě ve srovnání s JAD.

195
DarenW

Pokud vám nevadí čtení bytecode, javap by měl fungovat dobře. Je součástí standardní instalace 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
68
Michael Myers

Chcete dekompilátor Java, můžete k tomu použít nástroj příkazového řádku javap. Také Java Decompiler HOW-TO popisuje, jak můžete dekompilovat soubor třídy.

7
Drew Frezell

Použití Jad k dekompilaci je pravděpodobně vaše nejlepší volba. Pokud není kód zmaten, bude to mít za následek dobrý výsledek.

2
Rasmus Faber

to, co hledáte, je Java de-kompilátor. Doporučuji JAD http://www.kpdus.com/jad.html Je to zdarma pro nekomerční použití a dostane práci. 

Poznámka: to nebude dělat kód přesně stejný jako to, co bylo napsáno. tj. ztratíte komentáře a případně názvy proměnných, takže to bude o něco těžší než jen čtení normálního zdrojového kódu. Pokud je vývojář opravdu tajný, budou mít i jejich kód, který je ještě těžší číst. 

2
David Beleznay

cpuguru, pokud byl váš applet zkompilován s javac 1.3 (nebo méně), je nejlepší použít Jad.

Poslední JDK podporovaná JAD 1.5.8 (14. 4. 2001) je bohužel JDK 1.3.

Pokud byl váš aplet zkompilován s novějším kompilátorem, můžete zkusit JD-GUI : tento dekompilátor je ve vývoji, nicméně generuje správné zdroje jazyka Java většinou pro třídy kompilované s JDKs 1.4, 1.5 nebo 1.6.

DarenW, děkuji za váš příspěvek. JD-GUI ještě není nejlepší dekompilátor ... ale pracuji na :)

2
Emmanuel Dupuy

Pokud je soubor třídy, do kterého chcete nahlédnout, otevřený, neměli byste jej dekompilovat, ale místo toho připojte zdrojové soubory přímo do vašeho IDE. Tímto způsobem si můžete prohlédnout kód některé třídy knihovny, jako by to byl váš vlastní

1
arturh

To je kompilovaný kód, budete muset použít decompiler jako JAD: http://www.kpdus.com/jad.html

1
cynicalman

Musíte použít dekompilátor. Jiní navrhli JAD, existují i ​​jiné možnosti, JAD je nejlepší.

Zopakuji komentáře, které můžete ztratit ve srovnání s původním zdrojovým kódem. Bude to vypadat obzvláště vtipně, pokud kód používá generiky kvůli vymazání.

1
Zac Gochenour

Jak uvedl @MichaelMyers, použijte 

javap -c <name of Java class file> 

získat kód shromáždění JVM. Můžete také přesměrovat výstup na textový soubor pro lepší viditelnost.

javap -c <name of Java class file> > decompiled.txt
1
Nilashish C

jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.Zip&can=2&q= " je nejlepší a uživatelsky přívětivější možnost pro dekompilování souboru .class ....

JAD a/nebo JADclipse Eclipse plugin, jistě.

1
John Gardner

můžete také použít online Java dekompilátory k dispozici. Pro např. http://www.javadecompilers.com

0
Prachi Sharma

Není třeba dekompilovat Applet.class. Veřejný Java API třídy sourcecode přichází s JDK (pokud se rozhodnete nainstalovat), a je lépe čitelný než dekompilovaný bytecode. Komprimované můžete najít v src.Zip (umístěném v instalační složce JDK).

0
Arno

Jak bylo navrženo, můžete jej použít k dekompilaci a zobrazení souborů. Chcete-li usnadnit čtení, můžete použít plugin JADclipse pro Eclipse k integraci JAD přímo do Eclipse nebo použít DJ Java Decompiler, který je mnohem jednodušší než příkazový řádek JAD

0
amitwadhwa

JAD je vynikající volba, pokud chcete číst kód Java. Pokud opravdu chcete kopat do vnitřních souborů ve formátu .class, budete chtít javap. Je dodáván s JDK a umožňuje "dekompilovat" hexadecimální bytecode do čitelného ASCII. Jazyk, který produkuje, je stále bytecode (ne něco jako Java), ale je to poměrně čitelné a velmi poučné.

Také pokud opravdu chcete, můžete otevřít libovolný soubor .class v hexadecimálním editoru a číst bytecode přímo. Výsledek je totožný s použitím javap.

0
Daniel Spiewak

CFR - další Java dekompilátor je skvělý dekompilátor pro moderní Java napsaný v jazyce Java 6.

0
tidbeck