Programmation

Comment décompiler des fichiers .class ?

Pour décompiler un fichier .class il faut télécharger l’exécutable jad.exe. Ensuite il faut ouvrir une invite de commande Windows et taper les commandes suivantes :

C:\jad>jad.exe

Vous obtenez la liste des options disponibles :

Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov (jad@kpdus.com).
Usage:    jad [option(s)] <filename(s)>
Options: -a       – generate JVM instructions as comments (annotate)
         -af      – output fully qualified names when annotating
         -b       – generate redundant braces (braces)
         -clear   – clear all prefixes, including the default ones
         -d <dir> – directory for output files
         -dead    – try to decompile dead parts of code (if there are any)
         -dis     – disassembler only (disassembler)
         -f       – generate fully qualified names (fullnames)
         -ff      – output fields before methods (fieldsfirst)
         -i       – print default initializers for fields (definits)
         -l<num>  – split strings into pieces of max <num> chars (splitstr)
         -lnc     – output original line numbers as comments (lnc)
         -lradix<num>- display long integers using the specified radix
         -nl      – split strings on newline characters (splitstr)
         -noconv  – don’t convert Java identifiers into valid ones (noconv)
         -nocast  – don’t generate auxiliary casts
         -noclass – don’t convert .class operators
         -nocode  – don’t generate the source code for methods
         -noctor  – suppress the empty constructors
         -nodos   – turn off check for class files written in DOS mode
         -nofd    – don’t disambiguate fields with the same names (nofldis)
         -noinner – turn off the support of inner classes
         -nolvt   – ignore Local Variable Table entries (nolvt)
         -nonlb   – don’t insert a newline before opening brace (nonlb)
         -o       – overwrite output files without confirmation
         -p       – send all output to STDOUT (for piping)
         -pa <pfx>- prefix for all packages in generated source files
         -pc <pfx>- prefix for classes with numerical names (default: _cls)
         -pe <pfx>- prefix for unused exception names (default: _ex)
         -pf <pfx>- prefix for fields with numerical names (default: _fld)
         -pi<num> – pack imports into one line using .* (packimports)
         -pl <pfx>- prefix for locals with numerical names (default: _lcl)
         -pm <pfx>- prefix for methods with numerical names (default: _mth)
         -pp <pfx>- prefix for method parms with numerical names (default:_prm)
         -pv<num> – pack fields with the same types into one line (packfields)
         -r       – restore package directory structure
         -radix<num>- display integers using the specified radix (8, 10, or 16)
         -s <ext> – output file extension (default: .jad)
         -safe    – generate additional casts to disambiguate methods/fields
         -space   – output space between keyword (if, while, etc) and expression
         -stat    – show the total number of processed classes/methods/fields
         -t<num>  – use <num> spaces for indentation (default: 4)
         -t       – use tabs instead of spaces for indentation
         -v       – show method names while decompiling
         -8       – convert Unicode strings into ANSI strings (ansi)
         -&       – redirect STDERR to STDOUT

N’étant pas experte Windows mais plutôt Linux, j’ai copié les fichiers à décompiler dans le même répertoire que mon exécutable jad.exe. Ainsi la commande pour décompiler se résume à :

C:\jad>jad.exe -r -sjava -d C:\jad *.class

A présent vous pouvez ouvrir les fichiers .java qui viennent d’être généravec n’importe quel éditeur. Pour ma part j’utilise Eclipse.

Source : tutoriel de developpez.com.

2 réflexions au sujet de « Comment décompiler des fichiers .class ? »

  1. Mais pourquoi tout ce casse tête ??
    Il existe une application desktop très légère qui s’appelle « Cavaj » (l’envers de javac :P )
    Si t’es sous netbeans, tu peux ouvrir le fichier .class et regarder le code source dans l’IDE
    Cordialement

  2. svp, esque vous pouvez me dire comment decompiler un fichier .class sous linux non pas windows, merci d’avance

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *