IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI et Outils pour Java Discussion :

Decompilation Code JAVA avec JAD


Sujet :

EDI et Outils pour Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 25
    Points : 29
    Points
    29
    Par défaut Decompilation Code JAVA avec JAD
    Bonjour,
    j'ai utilisé le decompilateur JAD pour decompiler un fichier .class

    Le resultat obtenu est different de celle que j'entends.
    Le difference se situe au niveau de la gestion des erreurs

    EXemple

    Classe de départ :
    extrait original.java
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     public HashMap loadParameters() throws TechnicalException {
     
          HashMap result = new HashMap();
          String key = null;
          String value = null;
          InputStream inputStream = null;
     
          try {
             // lit le fichier de propriétés
             inputStream = getClass().getClassLoader().getResourceAsStream(m_fileLocation);
     
             // transforme le fichier lu en Properties
             Properties props = new Properties();
             props.load(inputStream);
     
             // boucle sur la liste des paramètres
     
             Enumeration keys = props.keys();
             while (keys.hasMoreElements()) {
                key = (String)keys.nextElement();
                value = (String)props.get(key);
     
                // enregistre le paramètre trouvé dans m_parameters
                result.put(key, value);
             }
     
             // renvoie le résultat
             return result;
          }
          catch (Exception e) {
             throw new TechnicalException(CLASS_NAME, "Error while loading parameters in file " + m_fileLocation, e);
          }
          finally {
             if (inputStream != null) {
                try {
                   inputStream.close();
                }
                catch (Exception e) {
                   // do nothing ...
                }
             }
          }
       }


    Extrait original obtenu après decompilation original.class avec JAD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    public HashMap loadParameters()
            throws TechnicalException
        {
            InputStream inputStream;
            Exception exception;
            HashMap result = new HashMap();
            String key = null;
            String value = null;
            inputStream = null;
            HashMap hashmap;
            try
            {
                inputStream = getClass().getClassLoader().getResourceAsStream(m_fileLocation);
                Properties props = new Properties();
                props.load(inputStream);
                for(Enumeration keys = props.keys(); keys.hasMoreElements(); result.put(key, value))
                {
                    key = (String)keys.nextElement();
                    value = (String)props.get(key);
                }
     
                hashmap = result;
            }
            catch(Exception e)
            {
                throw new TechnicalException(CLASS_NAME, "Error while loading parameters in file " + m_fileLocation, e);
            }
            finally
            {
                JVM INSTR jsr 149;
            }
            return hashmap;
            throw exception;
            local;
            if(inputStream != null)
                try
                {
                    inputStream.close();
                }
                catch(Exception e) { }
            JVM INSTR ret 9;
        }


    Constact 1 :

    compilation impossible ( problème sur le code de gestion des exception)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    finally
            {
                JVM INSTR jsr 149;
            }
            return hashmap;
            throw exception;
            local;
            if(inputStream != null)
                try
                {
                    inputStream.close();
                }
                catch(Exception e) { }
            JVM INSTR ret 9;


    Constat 2 :
    méthode suplementaire dans la classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    static Class _mthclass$(String x0)
        {
            return Class.forName(x0);
            ClassNotFoundException x1;
            x1;
            throw new NoClassDefFoundError(x1.getMessage());
        }


    Quelqu'un a t il une idée?
    Je vous remercie d'avance

  2. #2
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    je te conseille d'utiliser cavaj, pour moi c'est le meilleur decompilateur java

    tu le télécharge ici :

    http://www.bysoft.se/sureshot/cavaj/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Tout depend avec quel version du jdk tu as compilé ta classe.

    je crois que jad a un peu de mal avec les dernières version du jdk.


  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Pour info LinkinSelim cavaj utilise jad pour effectuer la decompilation.
    cavaj est juste une couche graphique pour jad
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/08/2014, 11h38
  2. Affichage de code Java avec coloration syntaxique
    Par sheep_one dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/06/2014, 17h16
  3. compiler code Java avec ToolProvider
    Par kespy13 dans le forum Langage
    Réponses: 0
    Dernier message: 15/05/2009, 20h20
  4. Reverse engineering (code Java) avec Bouml
    Par enirac dans le forum BOUML
    Réponses: 1
    Dernier message: 13/03/2008, 15h17
  5. Réponses: 0
    Dernier message: 14/02/2008, 21h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo