1

JD を使用して一連のクラスを逆コンパイルしました。

クラスの 1 つで、クラス内の public フィールドへの参照があります。上記のフィールドでクラスを開きます。これに出くわしたときの驚きを想像してみてください。

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 は (適切に) Java バージョン 1.4 までしかサポートしていないため、これは実際には予想される動作であると思います。列挙は Java 1.5 で導入されました。これは物事を説明することができます。

于 2012-07-09T12:22:00.547 に答える
1

逆コンパイル中は、複数の逆コンパイラを使用する必要があります。逆コンパイラ A は何かを行うことに成功し、逆コンパイラ B は別のことを行う可能性があります。したがって、それらを一緒に使用すると、全体像をより簡単に完成させるのに役立ちます。

于 2012-07-09T12:18:48.097 に答える