2

クラスファイル内のメソッドのバイトコードシーケンスであることがわかっているbyte[]配列があります。このbyte[]配列を選択的に逆コンパイルする方法はありますか? .class実際のファイルにアクセスできません。javassist.bytecode.CodeAttribute多くのメソッド (クラス)を持つ Javassist ライブラリを見てきましたが、そのような特定のメソッドを見つけることができませんでした。
誰にも手がかりがありますか?

このbyte[]配列を取得して、JVM リファレンス マニュアルを使用して実際のバイトコードから JavaByte コードへのニーモニックを生成できますが、逆コンパイルされた Java ソース コードを生成する必要があります。ありがとう!

4

2 に答える 2

3

単一のメソッドでバイトコードを処理するという話は聞いたことがありません。どうしようもないことに気がつくと思います。どのバイトコードを持っていますか? どこから入手したのですか?クラス ファイルの形式、メソッドの格納方法に精通していますか? たとえば、メソッドの名前は、特定のメソッドの一部ではなく、クラス ファイル全体の一部である定数プールに格納されます。メソッド形式について読み続けて、他に何が必要かを確認してください。あなたが持っていると思っているものを持っていないか、byte[]何かを作るのに十分な情報を持っていないのではないかと私は強く疑っています.

免責事項: 私はバイトコードの操作に手を出しただけなので、私の言うことを信頼できるとは思わないでください。仕様が言うことを信じてください。

于 2012-05-12T15:54:28.207 に答える
2

特定のメソッドのバイトコードのみを使用して有効な Java ソースを生成することは不可能です。これは、特にすべての名前がクラス全体の定数プールに格納されているためです。期待できる最善の方法は、バイトコード ニーモニックを生成することです。

于 2012-10-27T05:01:26.367 に答える