我使用反编译器来反编译.class文件似乎它反编译除了底部的一些代码之外的所有内容都非常奇怪,因为我是java的新手,我不确定它们是什么意思:
static
{
String[] tmp5_2 = new String[6];
jsr 50;
tmp5_2[0] = "pH@JeAE";
String[] tmp13_5 = tmp5_2;
jsr 42;
tmp13_5[1] = "lRMMoF";
String[] tmp21_13 = tmp13_5;
jsr 34;
tmp21_13[2] = "KHUT;\f\19VSv\rRHJkBJH@dL\18OAu";
String[] tmp29_21 = tmp21_13;
jsr 26;
tmp29_21[3] = "\18\14\22\n1\r\f\15\21";
String[] tmp37_29 = tmp29_21;
jsr 18;
tmp37_29[4] = "wTD\4OJRKEWJXDK@SLMAu\3UR\4NMPHJd\r";
String[] tmp45_37 = tmp37_29;
jsr 10;
tmp45_37[5] = "KHUT;\f\19\16\226\r\f\15\20/\18\19RP`WIR";
z = tmp45_37;
break label68:
label68: localObject = returnAddress;
}
查看tmp5_2[0]
之后的代码,例如,它们是什么意思?
答案 0 :(得分:3)
从快速浏览来看,我可能完全错了,它看起来像是被混淆工具混淆的代码,以防止你想要做的事情(逆向工程)
答案 1 :(得分:1)
请注意,您发布的代码不是有效的Java代码。
你为了得到这个而解编译的字节码很可能被一些混淆器混淆了,这个混淆器也混淆了String常量(我偶尔使用的唯一的混淆器是ZKM并且做了类似的事情。)
请在示例中注意此代码:
jsr 50;
这不是一个有效的Java语句,并且反编译器包含它,告诉你有一个字节码指令,它无法解编译成有效的Java源语句。
jsr
实际上是gosub
(即它在堆栈上推送返回地址并在指定的偏移处调用字节码,它通常用于实现finally
- 块),所以这段代码可能用于跳转到一些字符串“解密”子程序(我把解密放在引号中,因为它很可能不是在这里工作的强排版解密)。
答案 2 :(得分:0)
这些很可能是在应用程序中使用的加密字符串。 applet应该为它们包含某种解密例程,否则它将无法使用它们。这对我来说就像是一个名为z
(String数组)的类中某些字段的反编译或混淆的初始化代码。
就Java而言,这些只是常规的字符串常量。对他们来说没有什么特别的意义。