Décompilateur jd-gui

De EjnTricks

Cet article présente l'utilisation le décompileur JD-GUI présentant une interface graphique. Il est alors possible de naviguer au sein des sources comme dans un editeur de code, Eclipse par exemple, facilitant l'analyse d'une librairie existante.

Il est également possible de générer un export de toutes les sources, au sein d'un fichier zip.

Hand-icon.png Votre avis

Current user rating: 83/100 (25 votes)

 You need to enable JavaScript to vote


Process-Icon.png Utilisation

L'utilisation de JD-GUI ne nécessite aucune installation sur le poste client. Il suffit de décompresser le fichier zip, contenant un README et l'exécutable, dans un répertoire et de lancer l'exécutable.


Sur l'interface, il est alors possible de sélectionner un fichier jar pour la décompilation, en utilisant le menu File → Open File... Après sélection du jar, dans l'exemple la librairie xalan, toutes les classes sont décompilées et présentées sous une arborescence reproduisant les packages disponibles.


Au niveau de l'arbre de navigation, il est possible de consulter les déclarations au sein de la classe (méthodes, fonctions, variables, constantes ...) ou de cliquer dessus pour afficher le source décompilé au niveau de la partie droite.


Le menu File → Save All Sources, permet la création d'un fichier zip contenant alors l'ensemble du code décompilé depuis le fichier jar original. Après avoir spécifié l'emplacement de l'archive, JD-GUI exporte l'ensemble des sources en indiquant à l'utilisateur la progression de cette opération.


link Paramétrages

Format des sources

Lors de l'export des sources, JD-GUI va indiquer le numéro des lignes à l'aide de commentaire dans les fichiers générés. Cela est très pratique lors de l'analyse des stack Java sur une librairie compilée.

/*     */   public static ClassPath.ClassFile lookupClassFile(String class_name)
/*     */   {
/*     */     try
/*     */     {
/* 108 */       return class_path.getClassFile(class_name); } catch (IOException e) {
/* 109 */     }return null;
/*     */   }

Cependant, cela n'est vraiment pas pratique quand la décompilation est utilisée afin de recompiler une classe après modification. Les commentaires sur les numéros de lignes sont totalement inutiles et polluent légèrement le code source. Heureusement, ces informations sont peuvent être désactivées par un paramétrage dans les préférences, accessible avec le menu Help → Preferences...


Il faut alors décocher l'option Display line numbers. Ainsi les fichiers générés ne contiennent plus l'information sur le numéro de la ligne:

  public static ClassPath.ClassFile lookupClassFile(String class_name)
  {
    try
    {
      return class_path.getClassFile(class_name); } catch (IOException e) {
    }return null;
  }


Viewer icon.png Voir aussi

Documentation officielle: http://java.decompiler.free.fr/