这些编码代码?

可能重复:
jsr关键字是什么意思?

我使用反编译器来反编译.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]之后的代码是什么意思?

从快速浏览来看,我可能完全错了,它看起来像是被混淆工具混淆的代码,以防止你想要做的事情(逆向工程)

请注意,您发布的代码不是有效的Java代码。

为了得到这个而你解编译的字节码最有可能被一些混淆器混淆,这个混淆器也会混淆String常量(我偶尔使用的唯一的混淆器是ZKM ,它做了类似的事情)。

请在示例中注意此代码:

 jsr 50; 

这不是一个有效的Java语句,反编译器包含它,告诉你有一个字节码指令,它无法解编译成有效的Java源语句。

jsr实际上是一个gosub (即它在堆栈上推送返回地址并在指定的偏移量处调用字节码,它通常用于实现finally -blocks),因此这段代码可能用于跳转到某些字符串“解密”子例程(我把解密放在引号中,因为它很可能不是在这里工作的强排版解密)。

这些很可能是在应用程序中使用的加密字符串。 applet应该为它们包含某种解密例程,否则它将无法使用它们。 这对我来说就像是一个名为z (String数组)的类中某些字段的反编译或混淆的初始化代码。

就Java而言,这些只是常规的字符串常量。 对他们来说没有什么特别的意义。