masklinn í dag viðrar vel til loftárása | leonhard a écrit :
Si j'ai bien compris ce que tu veux c'est un "decompiler"... Normalement avec le sdk de java, il y a le programme javap qui pourrait t'aider... sinon un petit coup de "java decompiler" sur google devrait de donner des résultats intéressants.
A tites d'exemple, l'output de javap donne :
Code :
- public static double readDouble();
- Code:
- 0: aconst_null
- 1: astore_0
- 2: iconst_0
- 3: istore_2
- 4: invokestatic #5; //Method readLine:()Ljava/lang/String;
- 7: astore_1
- 8: aload_1
- 9: invokestatic #18; //Method java/lang/Double.valueOf:(Ljava/lang/String;)Ljava/lang/Double;
- 12: astore_0
- 13: iconst_1
- 14: istore_2
- 15: goto 19
- 18: astore_3
- 19: iload_2
- 20: ifeq 4
- 23: aload_0
- 24: invokevirtual #19; //Method java/lang/Double.doubleValue:()D
- 27: dreturn
- Exception table:
- from to target type
- 8 15 18 Class java/lang/NumberFormatException
|
|
Non, ce qu'il veut c'est pouvoir obtenir les opcodes depuis le bytecode, les opcodes étant le code exécuté par le processeur.
Leleniniste > je doute qu'il soit parfait (me semble qu'il y a pas mal de trucs pas encore implémentés) et il ne sort sûrement pas les même opcodes que la JVM officielle, mais GCJ est capable de compiler des .java et .class en code natif, tu peux probablement décompiler les executables derrière pour obtenir le bytecode.
Sinon, tu peux aussi essayer de voir dans l'implémentation de la JVM même (elle est passée OSS non?) de quelle manière elle fonctionne.
Alternative à la JVM officielle, il y a aussi Kaffe, une VM java avec JIT. ---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
|