Zvanična JVM specifikacija kaže sledeće:
Code:
int chooseNear(int i) {
switch (i) {
case 0: return 0;
case 1: return 1;
case 2: return 2;
default: return -1;
}
}
compiles to
Method int chooseNear(int)
0 iload_1 // Push local variable 1 (argument i)
1 tableswitch 0 to 2: // Valid indices are 0 through 2
0: 28 // If i is 0, continue at 28
1: 30 // If i is 1, continue at 30
2: 32 // If i is 2, continue at 32
default:34 // Otherwise, continue at 34
28 iconst_0 // i was 0; push int constant 0...
29 ireturn // ...and return it
30 iconst_1 // i was 1; push int constant 1...
31 ireturn // ...and return it
32 iconst_2 // i was 2; push int constant 2...
33 ireturn // ...and return it
34 iconst_m1 // otherwise push int constant -1...
35 ireturn // ...and return it
Slagali se sa mnom ili ne. ali to je vrlo slično onome što mi je dekompajler izbacio. Ako je obfuskacija, onda je vrlo loša, i mislim da bi ovako nešto dekompajler morao da korektno prikaže, jer se sa par minuta gledanja vrlo lako rekonstruiše ispravan kod. Očigledno je JAD prepoznao da se radi o JVM instrukciji tableswitch i ispisao je offsete.
Citat:
Skaarj: .jad je fajl koji opisuje .jar arhive. Covek ovde govori o jad.exe. Fajlu koji je dekompajler Java bajt koda.
Naravno da govorim o JADu - Java decompileru, koji je engine za skore sve front-end dekompajlere koji se mogu naći. Ne znam otkuda ovde ideja da govorim o običnom ASCII fajlu, koji je rezultat dekompilacije !?