1

我已经使用 JD 反编译了一组类。

在其中一个类中,有对类中公共字段的引用。我用提到的字段打开课程。想象一下当我遇到这个时我的惊讶:

public enum agw
{
}

我得出的结论是反编译器没有成功反编译某种类类型,可能是枚举。我遇到过其中一些。

另一个例子:

public enum acf
{
  private final Class d;
  private final int e;
  private final acn f;
  private final boolean g;

  private acf(Class paramacn, int paramBoolean, acn arg5, boolean arg6)
  {
    d = paramacn;
    e = paramBoolean;
    Object localObject;
    f = localObject;
    boolean bool;
    g = bool;
  }

  public Class a() {
    return d;
  }

  public int b() {
    return e;
  }

  public acn c() {
    return f;
  }

  public boolean d() {
    return g;
  }
}

有谁知道这些课程应该是什么?他们可以以原始形式代表什么?

谢谢。

4

3 回答 3

2

我认为你试图反编译的类是混淆的。从下面的代码中可以清楚地看到:

private final Class d;
  private final int e;
  private final acn f;
  private final boolean g;

  private acf(Class paramacn, int paramBoolean, acn arg5, boolean arg6)
  {
    d = paramacn;
    e = paramBoolean;
    Object localObject;
    f = localObject;
    boolean bool;
    g = bool;
  }
  • 程序员可能故意混淆代码以隐藏其目的(通过晦涩的安全性)或其逻辑以防止篡改,阻止逆向工程,或者作为阅读源代码的人的难题或娱乐挑战。

如果您确实想要访问代码,请联系所有者。否则,很难理解混淆后的代码。

于 2012-07-09T12:15:05.187 回答
2

好吧,我相信这实际上是预期的行为,因为 jad 仅支持(正确)最高 1.4 的 Java 版本。Java 1.5 中引入了枚举。这可以解释事情。

于 2012-07-09T12:22:00.547 回答
1

反编译时,您应该使用多个反编译器。反编译器 A 可能会成功地做某事,而反编译器 B 可能会成功地做另一件事。因此,将它们一起使用将帮助您更轻松地完成整个画面。

于 2012-07-09T12:18:48.097 回答