0

私たちのプロジェクトでは、一種のリバース エンジニアリングを行っています。そのためには、サードパーティの jar をデバッグする必要があります。

そのjarをDJ、JADで逆コンパイルしようとしましたが、出力はコンパイル時エラーのあるソースコードです(メソッドプロトタイプでは戻り値の型がブール値であるとしますが、int、壊れたforループなどを返します...)。

さて、この破損したソース コードには、デバッグしたい .java ファイルがいくつかあります。そして、これらのいくつかのファイルのソースコードを、jar 内の対応するクラスに添付したいと思います。

私はこれをグーグルで検索しましたが、有用なものは見つかりませんでした。????

4

3 に答える 3

2

問題は、逆コンパイラが正しい行番号でソース ファイルを書き換えることができない可能性が高いことです。したがって、コンパイルされたライブラリに適切な行番号情報が含まれていても、そのままでは逆コンパイルされた出力を使用しても機能しません。

ソースコードがなくても、(コンパイルされたクラスファイルで行番号情報が利用できる限り) メソッドにブレークポイントを設定できます。ローカル変数の値を読み取ることさえできるかもしれませんが (クラスがデバッグ情報でコンパイルされている場合)、逆コンパイラの出力を見て、逆コンパイルされたメソッドが実際のコード。

不可能ではありませんが、「手動」作業が必要です。

于 2011-01-05T09:13:15.507 に答える
0

デバッグに使用している IDE については言及していません。クラス形式でのみ利用可能なクラスをデバッグしようとすると、Eclipse はソースを要求します。主な問題は、Andreas_D が一致しない行番号について既に言及したことです。

私は次のことを試してみます。

  1. 動作状態で逆コンパイルされていないすべての逆コンパイルされた Java ファイルを削除します。
  2. クラスパスの元の JAR を使用して、逆コンパイルされた各動作中の Java ファイルをコンパイルしてみてください。これにより、デバッグ用の正しい行情報を含む新しいクラス ファイルを生成できます。
  3. ここで、JAR ファイル内のクラス ファイルを、正常に再コンパイルしたものに置き換えます。Java ファイルも追加します。デバッグ IDE はソース ファイルを自動的に認識するはずです。
于 2011-01-05T13:13:59.287 に答える
0

Java コードでクラスのソース コードを添付するには、次のようにします。

  • 目的のクラスを右クリックします

  • Open Declaration [F3]
    Class File editor に移動し、[Attach Source] ボタンをクリックして開きます。

  • ソースコードのある jar を閲覧する

  • [OK]をクリックし
    ます。上記の手順を実行した後、Open Declaration はソース コードを含む .class ファイルを開きます。

于 2012-09-26T12:17:46.447 に答える