2011-01-05 12 views
0

私たちのプロジェクトでは、リバースエンジニアリングをしています。 そのためにはサードパーティのjarをデバッグする必要があります。いくつかのクラスのソースをjarファイルに添付する

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

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

私はこれについてはGoogleで検索しましたが、役に立たないものは見つかりませんでした。 ????

+1

jarから実行している場合、添付されたソースコードをコンパイルする必要はありません。 jarファイルはデバッグ情報でコンパイルされています。行番号が一致しなければなりません。そうでなければ、クラスをデバッグできません。 –

+0

Manifest.MF: - マニフェスト - バージョン:1.0 Ant-Version:Apache Ant 1.5.4 作成者:1.4.2_05-b04(Sun Microsystems Inc.) – mogli

答えて

2

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

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

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

+0

ありがとうございました。いくつか手作業をした後、私はセットアップが適切に機能しています。 – mogli

0

デバッグに使用しているIDEについては言及していません。クラスフォームでのみ使用可能なクラスをデバッグしようとしている場合、Eclipseはソースを尋ねます。主な問題は、Andreas_Dがすでに一致していない行番号を述べたためです。

私は以下を試します。

  1. がデコンパイルされていないすべてのデコンパイルされたjavaファイルを削除します。
  2. クラスパス内のオリジナルの JARを使用して、各作業中の デコンパイル済みのJavaファイルをコンパイルしてみます。この は、 のデバッグ用の正しい行情報を持つ新しいクラス ファイルを生成できます。
  3. JARファイルのクラスファイルを に置き換えて正常に再コンパイルしました。 javaファイルも を追加してください。デバッグ用IDE は、 のソースファイルを自動的に認識します。
0

Javaコードでクラスのソースコードを取り付けるには:

  • 宣言[F3]
    クラスファイルを開くために行く

  • 目的のクラスを右クリックします編集者が添付ファイルボタンをクリックして開きます

  • ステップの上に行った後、ソースコード

  • クリックして[OK]を< >
    を持っているブラウズジャーは、オープン宣言は、ソースコードを持つの.classファイルを開きます。

関連する問題