Comment puis-je ouvrir Java?les fichiers de classe dans un lisible par l'homme?

j'essaie de comprendre ce que fait le fichier Classe D'un applet Java sous le capot. L'ouvrir avec du bloc-notes ou du Textpad montre juste un tas de goobledy-gooks.

Est-il possible de se disputer dans un peu-format lisible afin que je puisse essayer de comprendre ce qu'il fait?

  • Environnement == Windows w/ VS 2008 installé.
94
demandé sur Pops 2008-09-17 00:01:49

17 réponses

jd-gui est le meilleur decompiler pour le moment. il peut gérer de nouvelles fonctionnalités en Java, par rapport à la poussière JAD.

187
répondu DarenW 2013-10-19 02:20:22

si cela ne vous dérange pas de lire bytecode, javap devrait fonctionner très bien. Il fait partie de L'installation 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
67
répondu Michael Myers 2008-09-16 20:08:16

vous voulez un décompiler java, vous pouvez utiliser l'outil en ligne de commande javap pour faire cela. Aussi, Java Decompiler COMMENT faire décrit comment vous pouvez décompiler un fichier de classe.

7
répondu Drew Frezell 2008-09-16 20:05:14

en utilisant Jad pour décompiler il est probablement votre meilleure option. A moins que le code n'ait été brouillé, il produira un bon résultat.

2
répondu Rasmus Faber 2008-09-16 20:03:26

ce que vous recherchez est un dématérialisateur java. Je recommande JAD http://www.kpdus.com/jad.html c'est gratuit pour un usage non commercial et fait le travail.

Note: cela ne va pas rendre le code exactement le même que ce qui a été écrit. c'est-à-dire que vous allez perdre des commentaires et peut-être des noms de variables, donc ça va être un peu plus difficile que de simplement lire du code source normal. Si le développeur est vraiment secret ils auront ils ont aussi brouillé leur code, rendant la lecture encore plus difficile.

2
répondu David Beleznay 2008-09-16 20:05:58

cpuguru, si votre applet a été compilé avec javac 1.3 (ou moins), votre meilleure option est d'utiliser Jad.

malheureusement, le dernier JDK soutenu par JAD 1.5.8 (avr 14, 2001) est JDK 1.3.

si votre applet a été compilé avec un compilateur plus récent, vous pouvez essayer JD-GUI : ce décompiler est en cours de développement, néanmoins, il génère des sources Java correctes, la plupart du temps, pour les classes compilées avec le jdks 1.4, 1.5 ou 1.6.

DarenW, merci pour votre message. JD-GUI n'est pas encore le meilleur décomposeur ... mais j'y travaille :)

2
répondu Emmanuel Dupuy 2008-12-23 17:56:50

C'est du code compilé, vous aurez besoin d'utiliser un décomposeur comme JAD: http://www.kpdus.com/jad.html

1
répondu cynicalman 2008-09-16 20:03:44

Vous devez utiliser un décompilateur. D'autres ont suggéré JAD, il y a d'autres options, JAD est le meilleur.

je vais faire écho aux commentaires que vous pourriez perdre un peu par rapport au code source original. Il va s'intéresser particulièrement drôle si le code utilisé génériques, en raison de l'effacement.

1
répondu Zac Gochenour 2008-09-16 20:12:50

JAD et/ou jadclipse Eclipse plugin, for sure.

1
répondu John Gardner 2008-09-16 20:35:47

si le fichier de classe que vous voulez consulter est open source, vous ne devez pas le décompiler, mais à la place joindre les fichiers source directement dans votre IDE. de cette façon, vous pouvez simplement visualiser le code d'une classe de bibliothèque comme si c'était le vôtre

1
répondu arturh 2009-05-13 10:54:10

jd-gui " http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q = " est la meilleure option pour décompiler .fichier de classe....

1
répondu Karthikeyan Subramanian 2013-09-27 10:05:57

comme suggéré, vous pouvez utiliser JAD pour décompiler et voir les fichiers. Pour le rendre plus facile à lire, vous pouvez utiliser le plugin jadclipse pour eclipse pour intégrer JAD directement à eclipse ou utiliser DJ Java Decompiler qui est beaucoup plus facile à utiliser que la ligne de commande JAD

0
répondu 2008-09-16 20:07:55

JAD est une excellente option si vous voulez du code Java lisible comme résultat. Si vous voulez vraiment creuser dans les internes du format de fichier .class cependant, vous allez vouloir javap . Il est fourni avec le JDK et vous permet de "décomposer" le bytecode hexadécimal en ASCII lisible. Le langage qu'il produit est toujours bytecode (pas quelque chose comme Java), mais il est assez lisible et extrêmement instructif.

aussi, si vous vraiment si vous voulez, vous pouvez ouvrir n'importe quel fichier .class dans un éditeur hexadécimal et lire le bytecode directement. Le résultat est identique à l'utilisation de javap .

0
répondu Daniel Spiewak 2008-09-16 20:09:25

il n'est pas nécessaire de décompiler Applet.classe. Le code sourcecode des classes publiques de L'API Java est fourni avec le JDK (si vous choisissez de l'installer), et est mieux lisible que le bytecode décompilé. Vous pouvez trouver comprimé dans src.zip (situé dans votre dossier d'installation JDK).

0
répondu Arno 2008-09-16 20:45:34

CFR - un autre java decompiler est un grand decompiler moderne Java écrit j'ai la version 6 de Java.

0
répondu tidbeck 2017-01-18 13:54:18

comme le souligne @MichaelMyers, utilisez

javap -c <name of java class file> 

pour obtenir le code d'assemblage JVM. Vous pouvez également rediriger la sortie vers un fichier texte pour une meilleure visibilité.

javap -c <name of java class file> > decompiled.txt
0
répondu Nilashish C 2018-02-16 15:51:07

vous pouvez également utiliser les java decompilers disponibles en ligne. Pour par exemple http://www.javadecompilers.com

0
répondu Prachi Sharma 2018-02-23 11:50:23