Le blog de Fatiha

Une geek de plus !

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.

Catégorie : Programmation
Mot-Clé : ,
  • TheBlue a dit :

    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

  • lidia a dit :

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

Votre adresse email ne sera pas publiée. Champs requis marqués avec *

*

Merci de taper les caractères de l'image Captcha dans le champ

Recopier les caractères contenus dans le cadre