Quel programme puis-je utiliser pour décompiler un fichier de classe? Vais-je réellement obtenir du code Java ou s'agit-il simplement d'un code d'assemblage JVM?
Sur les questions de performance Java sur ce site, je vois souvent des réponses de personnes qui ont "décompilé" le fichier de classe Java pour voir comment le compilateur optimise certaines choses.
java
decompiler
Kip
la source
la source
Réponses:
Mise à jour février 2016:
www.javadecompilers.com répertorie JAD comme étant:
Votre kilométrage peut donc varier avec les jdk récents (7, 8).
Le même site répertorie d'autres outils.
Et javadecompiler, comme l'a noté Salvador Valencia dans les commentaires (septembre 2017), propose un SaaS où vous téléchargez le
.class
fichier dans le cloud et il vous renvoie le code décompilé.Réponse originale: oct. 2008
Décompilateur Java (encore un autre décompilateur Java rapide) a:
Il fonctionne avec les compilateurs de JDK 1.1.8 à JDK 1.7.0 et autres ( Jikes , JRockit , etc.).
Il dispose d'une version de démonstration en ligne en direct qui est en fait entièrement fonctionnelle! Vous pouvez simplement déposer un fichier jar sur la page et voir le code source décompilé sans rien installer.
la source
Il y a quelques décompilateurs là-bas ... Une recherche rapide donne:
Et beaucoup plus.
Ceux-ci produisent du code Java. Java est livré avec quelque chose qui vous permet de voir le code d'octet JVM ( javap ).
la source
Pour voir le code source Java, vérifiez un décompilateur. Allez chercher jad .
Si vous voulez voir les bytecodes, utilisez simplement javap fourni avec le JDK.
la source
J'en ai essayé plusieurs, et Procyon a semblé fonctionner le mieux pour moi. Il est en cours de développement et prend en charge de nombreuses fonctionnalités des dernières versions de Java.
Ce sont les autres que j'ai essayés:
-skip
indicateur de ligne de commande pour qu'il ne s'arrête pas en cas d'erreur. Développé activement, et assez intéressant, il est écrit en Python.la source
IGNORE_EXCEPTIONS
chose a maintenant été changée en drapeau de ligne de commande-skip
.J'utilise JAD Decompiler .
Il existe un plugin Eclipse pour cela, jadeclipse . C'est plutôt sympa.
la source
Procyon comprend un décompilateur. C'est FOSS.
la source
La suie est une option pour le code Java plus récent. Au moins, il a l'avantage d'être encore récemment entretenu ...
De plus, Java Decompiler est un décompilateur avec une interface graphique autonome et une intégration Eclipse.
Enfin, Jdec n'a pas été mentionné, bien qu'il ne soit pas aussi raffiné que les autres options.
la source
JD-GUI est vraiment bon. Vous pouvez simplement ouvrir un fichier JAR et parcourir le code comme si vous travaillez sur un IDE. Bon produit.
la source
Voici une liste de décompilateurs en date de février 2015:
Procyon , open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
CFR , gratuit, pas de code source disponible, http://www.benf.org/other/cfr/
JD , gratuit pour un usage non commercial uniquement, http://jd.benow.ca/
Fernflower , open-source, https://github.com/fesh0r/fernflower ,
JAD - donné ici uniquement pour des raisons historiques. Gratuit, aucun code source disponible, http://varaneckas.com/jad/ obsolète, non pris en charge et ne décompile pas correctement Java 5 et ultérieures.
Vous pouvez tester les décompilateurs mentionnés ci-dessus en ligne, aucune installation requise et faire votre propre choix.
Décompilateurs Java dans le cloud: http://www.javadecompilers.com/
la source
Il existe quelques programmes que vous pouvez utiliser. Vous obtiendrez le code Java réel, mais parfois le code aura été obscurci de sorte que les méthodes sont nommées par une lettre ou un chiffre ou un mélange aléatoire de lettres et de chiffres.
DJ Decompiler Mocha
la source
La plupart des décompilateurs pour Java sont basés sur JAD . C'est un excellent outil, mais malheureusement n'a pas été mis à jour depuis un certain temps et ne gère pas très bien les classes Java 1.5+. Je n'ai vu aucun outil capable de gérer correctement les classes 1.5+.
la source
Jetez un oeil à cavaj .
la source
jad
dessous.Tous les liens JAD répertoriés jusqu'à présent semblent être rompus, j'ai donc trouvé ce site. Fonctionne très bien (pour Linux, au moins)! Sur Ubuntu 11.10, j'ai dû télécharger le statique pour une raison quelconque.
http://www.varaneckas.com/jad
la source
JAD est celui qui fonctionne et est simple.
De plus, si vous voulez simplement voir les méthodes, utilisez javap.
la source
Si vous voulez voir comment le compilateur Java fait certaines choses, vous ne voulez pas de décompilation, vous voulez un désassemblage. La décompilation implique de transformer le bytecode en source Java, ce qui signifie que beaucoup d'informations de bas niveau sont perdues, et si vous vous interrogez sur l'optimisation du compilateur, ce sont probablement les informations mêmes qui vous intéressent.
Quoi qu'il en soit, il se trouve que j'ai écrit un désassembleur Java open source . Contrairement à Javap, cela fonctionne même sur des classes hautement pathologiques, vous pouvez donc voir ce que les outils d'obscurcissement font également à vos classes. Il peut également effectuer une décompilation, mais je ne le recommanderais pas.
la source
JAD ne fonctionne pas pour moi (problème Ubuntu 11.10), j'ai donc avancé et arrêté JODO . Au moins, il a du code source Open Java et a pu décompiler correctement ma classe .
Je recommande de vérifier d'abord la branche «branches / générique» . Le tronc n'est pas stable.
la source
Sur la plate-forme IntelliJ IDEA, vous pouvez utiliser le plug-in Java Decompiler IntelliJ . Il vous permet d'afficher toutes les sources Java pendant votre processus de débogage, même si vous ne les avez pas toutes. Il est basé sur les fameux outils JD-GUI .
la source
Avec AndroChef Java Decompiler, vous pouvez décompiler les fichiers de classe apk , dex, jar et java. C'est simple et facile. AndroChef JD est basé sur FernFlower . Vous pouvez l'évaluer en 10 utilisations gratuites.
la source
Pour OSX, je recommande: jarzilla ou JD-GUI
Ils vous permettent tous les deux de voir le pot, la guerre, etc. contenu du fichier et décompile tous les fichiers de classe à l'intérieur d'eux.
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/
la source