JD-GUI

Utilitaire graphique autonome qui affiche le code source Java décompilé à partir de fichiers .class et .jar. Standalone graphical utility that displays Java source code decompiled from .class and .jar files.

↗ https://github.com/java-decompiler/jd-gui

Overview

JD-GUI is a GUI decompiler for Java bytecode. Point it at a .class file or a whole .jar and it reconstructs readable (if sometimes imperfect) Java source, with a tree view for navigating packages/classes and search across the decompiled codebase. It’s a go-to first step when assessing Java desktop apps, Android app JARs (after conversion), thick-client applications, or any distributed .jar where you need to read the logic without source access.

Common Usage

Launch the GUI

jd-gui

Open a specific jar directly from the command line

jd-gui target-app.jar

Batch-decompile a jar to source files (non-interactive, via jd-cli variant)

jd-cli target-app.jar -od ./decompiled-src/

Typical Workflow

  1. Open the target application’s jar
jd-gui webapp-backend.jar
# 2. Use the search bar (Ctrl+Shift+S) to grep for strings of interest
#    e.g. "password", "secret", "TODO", hardcoded IPs/URLs

# 3. Right-click a class -> Save Source to export .java files for grepping
#    or feeding into static analysis tooling
grep -r "password\|apikey\|BEGIN RSA" ./decompiled-src/

Notes

  • Decompilation isn’t always perfect — obfuscated or heavily optimized bytecode can produce misleading or broken-looking source; cross-check against bytecode (javap -c) when in doubt.
  • For Android APKs, convert classes.dex to a jar first (e.g. with dex2jar) before opening in JD-GUI, or use jadx which handles DEX natively.
  • Good complement to jsql for source review after gaining access to a Java-backed app’s JARs.
Help / Man page
jd-gui [file.jar|file.class ...]

JD-GUI is primarily GUI-driven; no extensive CLI flag set.

Key shortcuts:
  Ctrl+O          Open file
  Ctrl+Shift+S    Search across all classes
  Ctrl+S          Save decompiled source for current class
  Right-click -> Save All Sources    Batch-export entire jar to .java files

CLI companion (jd-cli):
  jd-cli <input.jar> -od <output_dir>    Batch decompile without GUI
  jd-cli -h                              Show jd-cli options

Vue d’ensemble

JD-GUI est un décompilateur graphique pour le bytecode Java. On lui pointe un fichier .class ou tout un .jar et il reconstruit du code source Java lisible (parfois imparfait), avec une vue en arborescence pour naviguer dans les packages/classes et une recherche à travers le code décompilé. C’est une première étape incontournable pour auditer des applications Java desktop, des JARs d’applications Android (après conversion), des applications thick-client, ou tout .jar distribué où l’on doit lire la logique sans accès au code source.

Utilisation courante

# Lancer le GUI
jd-gui

# Ouvrir un jar spécifique directement depuis la ligne de commande
jd-gui target-app.jar

# Décompiler un jar en masse vers des fichiers source (non interactif, via la variante jd-cli)
jd-cli target-app.jar -od ./decompiled-src/

Workflow typique

# 1. Ouvrir le jar de l'application cible
jd-gui webapp-backend.jar

# 2. Utiliser la barre de recherche (Ctrl+Shift+S) pour grep les chaînes intéressantes
#    ex. "password", "secret", "TODO", IPs/URLs en dur

# 3. Clic droit sur une classe -> Save Source pour exporter les fichiers .java à grep
#    ou à passer à des outils d'analyse statique

# 4. Grep sur le code exporté
grep -r "password\|apikey\|BEGIN RSA" ./decompiled-src/

Notes

  • La décompilation n’est pas toujours parfaite : le bytecode obfusqué ou fortement optimisé peut produire du code source trompeur ou d’apparence cassée ; vérifier avec le bytecode (javap -c) en cas de doute.
  • Pour les APK Android, convertir classes.dex en jar au préalable (par exemple avec dex2jar) avant de l’ouvrir dans JD-GUI, ou utiliser jadx qui gère le DEX nativement.
  • Bon complément à jsql pour la revue de code source une fois l’accès obtenu aux JARs d’une application backée par Java.
Aide / Page de manuel
jd-gui [file.jar|file.class ...]

JD-GUI is primarily GUI-driven; no extensive CLI flag set.

Key shortcuts:
  Ctrl+O          Open file
  Ctrl+Shift+S    Search across all classes
  Ctrl+S          Save decompiled source for current class
  Right-click -> Save All Sources    Batch-export entire jar to .java files

CLI companion (jd-cli):
  jd-cli <input.jar> -od <output_dir>    Batch decompile without GUI
  jd-cli -h                              Show jd-cli options