OllyDbg / SoftICE for javaに似たユーティリティはありますか?つまり、クラスを実行し(jarから/クラスパスを使用)、ソースコードなしで、中間コードの逆アセンブルを示し、ステップスルー/ステップオーバー/参照の検索/メモリ内の特定の中間コードの編集/ファイルへの編集の適用を行います。 。
そうでない場合は、このようなものを書くことさえ可能ですか(デバッグ期間中はホットスポットなしで生きることをいとわないと仮定します)?
編集:私はJADまたはJDまたはCavajについて話していません。これらは優れた逆コンパイラですが、いくつかの理由で逆コンパイラは必要ありません。最も注目すべきは、出力が正しくないことです(せいぜい、場合によってはまったく間違っていることもあります)。私は魔法の「Javaコードにコンパイルされたバイト」を探していません-実行されようとしている実際のバイトを見たいのです。また、(アセンブリデバッガーの場合と同様に)これらのバイトを変更し、できれば変更した部分をクラスファイルに書き戻す機能が必要です。
Edit2:javapが存在することは知っていますが、それは1つの方法しか実行しません(そして、いかなる種類の分析も行いません)。例(vmspecドキュメントから取得したコード):javaコードから、「javac」を使用してこれをコンパイルします。
void setIt(int value) {
i = value;
}
int getIt() {
return i;
}
java.classファイルに。javap -cを使用すると、次の出力を取得できます。
Method void setIt(int)
0 aload_0
1 iload_1
2 putfield #4
5 return
Method int getIt()
0 aload_0
1 getfield #4
4 ireturn
これは逆アセンブル部分では問題ありませんが(分析なしではあまり良くありません-「フィールド#4はExample.i」です)、他の2つの「ツール」が見つかりません。
- 命令自体(スタック、メモリダンプなど)を調べて、実際のコードと環境を調べることができるデバッガー。
- プロセスを逆にする方法-分解されたコードを編集し、(編集されたコードを使用して).classファイルを再作成します。