2016-05-13 6 views
1

私はメソッドm()を持つクラスAとメソッドn()を持つクラスBを持っています。 私はタイプBのフィールドbを持っています。 m()ではb.n()の呼び出しがあります。 b.n()呼び出しの前後で何らかのアクションを実行するために、ByteBuddyでAのコードを変更する必要があります。 問題を攻撃するためにいくつかのアドバイス/ヒント/ヒントが必要です。事前にByteBuddyはメソッドのバイトコード内の特定のクラスインスタンスへの呼び出しを傍受します

おかげで、

ラドゥ

答えて

0

あなたが唯一の基礎となるASMのAPIを使用して、カスタムバイトコードを書き込むことによって、バイトバディでこれを行うことができます。 Byte Buddyは、メソッド内のコードを変更するための高度な構造を提供していません。

APIは、AsmVisitorWrapperの登録によって公開されます。

また、あなたは、この傍受ロジックを追加して、Aのフィールドとして設定。これは、しかし、Aを介して

+0

感謝をすべてinvokationsに影響を与えるB.n()のサブクラスを作成することができます!私はAsmVisitorWrapperで掘り下げます。 ASM APIは印象的で、攻撃できるようにするには良い形にする必要がありますが、それは人生です。 :)私は順番にステートメントにアクセスし、それらを場所に格納し、それらをメソッドに戻す方法を見つけられませんでした(それらを変更した後)。おそらく、やや異なるアプローチがあります。あなたの種類の答えをもう一度ありがとう、Radu –

関連する問題