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:
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:
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:
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:
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