这些编码代码?

时间:2010-01-25 21:41:24

标签: java applet decompiling

  

可能重复:
  What does the jsr keyword mean?

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

请在示例中注意此代码:

jsr 50;

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

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

答案 2 :(得分:0)

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

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