Question Comment puis-je "décompiler" les fichiers de classe Java? [fermé]


Quel programme puis-je utiliser pour décompiler un fichier de classe? Est-ce que j'obtiendrai du code Java, ou est-ce seulement du code assembleur JVM?

Sur les questions de performance Java sur ce site, je vois souvent des réponses de gens qui ont "décompilé" le fichier de classe Java pour voir comment le compilateur optimise certaines choses.


556
2017-11-07 16:00


origine


Réponses:


Mise à jour février 2016:

www.javadecompilers.com énumère JAD comme étant:

le décompilateur Java le plus populaire, mais principalement de cet âge seulement. Écrit en C ++, donc très vite.
  Périmé, non pris en charge et ne décompile pas correctement Java 5 et versions ultérieures

Donc, votre kilométrage peut varier avec jdk récente (7, 8).

Le même site liste d'autres outils.

Et javadecompiler, comme indiqué par Salvador Valence dans les commentaires (Septembre 2017), propose un SaaS où vous téléchargez le .class fichier sur le nuage et il vous renvoie le code décompilé.


Réponse originale: Oct. 2008

  • La version finale de JSR 176, définissant les principales fonctionnalités de J2SE 5.0 (Java SE 5), a été publiée le 30 septembre 2004.
  • La dernière version Java prise en charge par JAD, le célèbre décompilateur Java écrit par M. Pavel Kouznetsov, est JDK 1.3.
  • La plupart des décompilateurs Java téléchargeables aujourd'hui sur Internet, tels que "DJ Java Decompiler" ou "Cavaj Java Decompiler", sont alimentés par JAD: ils ne peuvent pas afficher les sources Java 5.

Java Decompiler (Encore un autre décompilateur Fast Java) a:

  • Prise en charge explicite de la décompilation et de l'analyse Java 5+ Fichiers ".class".
  • Une interface graphique sympa:

screenshot

Il fonctionne avec les compilateurs de JDK 1.1.8 jusqu'à JDK 1.7.0, et d'autres (Jikes, JRockit, etc.).

Il dispose d'un en ligne version de démonstration en direct C'est en fait entièrement fonctionnel! Vous pouvez simplement déposer un fichier jar sur la page et voir le code source décompilé sans rien installer.


588
2017-11-07 16:18



Il y a quelques décompilateurs là-bas ... Une recherche rapide donne:

  1. Procyon: open-source (Apache 2) et développé activement
  2. Krakatau: open-source (GPLv3) et développé activement
  3. CFR: open-source (MIT) et activement développé
  4. JAD
  5. DJ Java Decompiler
  6. Moka

Et beaucoup plus.

Ceux-ci produisent du code Java. Java est livré avec quelque chose qui vous permet de voir le code octet JVM (javap).


101
2017-11-07 16:03



Pour voir le code source Java, vérifiez un décompilateur. Aller chercher jad.

Si vous voulez voir les bytecodes, utilisez simplement javap qui vient avec le JDK.


51
2017-11-07 16:03



J'ai essayé plusieurs, et Procyon semblait fonctionner le mieux pour moi. Il est en développement actif et supporte de nombreuses fonctionnalités des dernières versions de Java.

Ce sont les autres que j'ai essayés:

  • CFR
    • Décompilation prometteuse, mais souvent échouée. Je vais garder mon oeil sur celui-ci. Également développé activement avec le support des dernières fonctionnalités de Java.
  • Krakatau
    • Adopte une approche différente en ce sens qu'il essaie de produire un code Java équivalent au lieu d'essayer de reconstruire la source originale, ce qui a le potentiel de le rendre meilleur pour le code obscurci. De mes tests, c'était à peu près au même niveau que Procyon, mais toujours agréable d'avoir quelque chose de différent. J'ai dû utiliser le -skipdrapeau de ligne de commande afin qu'il ne s'arrête pas sur les erreurs. Activement développé, et assez intéressant, il est écrit en Python.
  • JD-GUI
  • JAD
    • A travaillé, mais ne supporte que Java 1.4 et ci-dessous. Aussi disponible en tant que Plugin Eclipse. Plus en développement

29
2017-10-02 19:00



j'utilise Décompilateur JAD.

Il y a un Éclipse plugin pour cela, jadeclipse. C'est plutôt sympa.


18
2017-11-07 16:07



Procyon comprend un décompilateur. C'est FOSS.


14
2018-06-10 14:02



Suie est une option pour le nouveau code Java. Au moins, il a l'avantage d'être encore maintenu récemment ...

Aussi, 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 poli que d'autres options.


13
2017-09-18 23:53