瓶の中の一部のクラスのソースを接続します
-
25-09-2019 - |
質問
私たちのプロジェクトでは、一種のリバースエンジニアリングを行っています。そのためには、サードパーティの瓶をデバッグする必要があります。
DJ、JADでそのJARを削除しようとしましたが、出力はコンパイルタイムエラーを備えたソースコードです(たとえば、返品タイプはメソッドプロトタイプではブール値ですが、INTを返し、ループのために壊れます...など)。
さて、この破損したソースコードのうち、デバッグしたい.javaファイルはほとんどありません。また、これらのいくつかのファイルソースコードをJARの対応するクラスを添付したいと思います。
私はこれをグーグルで検索しましたが、何も便利なものが見つかりませんでした。 ????
解決
ブロッカーは、逆コンパイラが正しい行番号でソースファイルを書き換えることができない可能性が高いことです。したがって、コンパイルされたLIBに適切なライン番号情報がある場合でも、ボックスから分解された出力を使用しても機能しません。
ソースコードを持っていなくても、メソッドのブレークポイントをメソッド(コンパイルされたクラスファイルで使用できる限り)を設定できます。ローカル変数の値を読み取ることさえできるかもしれません(クラスがデバッグ情報でコンパイルされている場合)。実際のコード。
不可能ではありませんが、「手動」作業が必要です。
他のヒント
デバッグに使用しているIDEがどのIDEを使用しているかについては言及しませんでした。 Eclipseは、クラス形式でのみ利用可能なクラスをデバッグしようとしているかどうかをソースに求めます。主な問題は、Andreas_Dが既に一致しない行数に言及したことです。
次のことを試してみます。
- 削除されたすべての分解されたJavaファイルは、作業状態で逆コンパイルされていません。
- ClassPathの元のjarを使用して、作業する各分解されたJavaファイルをコンパイルしてみてください。これにより、デバッグ用の正しいラインインフォスを備えた新しいクラスファイルを生成できます。
- JARファイルのクラスファイルを、正常に再コンパイルしたファイルに置き換えます。 Javaファイルも追加します。デバッグIDEは、ソースファイルを自動的に認識する必要があります。
Javaコードのクラスのソースコードを添付するには:
目的のクラスを右クリックします
宣言を開いてください F3
クラスファイルエディターが開きます。[ソース]ボタンの添付をクリックしますソースコードを備えた瓶を参照します
クリックu003COk>
上記のステップを実行した後、宣言を開くと、ソースコードがあるクラスファイルが開きます。