.classファイルにコンパイルされたJavaコードがあります。いくつかのパラメーターを取得して何らかのアクションを実行する関数があります(たとえば、intxとintyを取得してx + yを実行します)

x = 1かどうかをチェックするこの.classファイルコードに追加したいと思います。別の関数を呼び出す(たとえば、xyを呼び出してx + yを実行しない)

コンパイルされた.classファイルを編集して独自のコードを追加するにはどうすればよいですか?

コメント

  • 質問を編集しました。これが実際に質問したかったことです。そうでない場合は、コメントで明確にするか、自分で編集してください。

回答

これを実現するには、いくつかの方法があります。

  1. .classを.javaソースに逆コンパイルします(必ずしも元のソースではありませんが、同等です)、変更を加えて、再度コンパイルします。Javaデコンパイラーはたくさんありますが、すべてをリストするわけではありません。

  2. .classを分解して「アセンブリ」(通常はJasmin構文)、変更、アセンブルバック。 Krakatau は、それを実行できるはずの優れたツールです。

  3. 変更可能なツールを使用してください/ .classファイルに直接バイトコードをパッチします。試したことはありませんが、 Recaf はそれができると主張しています。

  4. Javaをフックしますランタイムインタープリターは、ターゲット関数の実行を開始した瞬間をキャッチし、代わりに別の何かを実行させます。これは実装固有ですが、Javaデバッグプロトコル(JWDP)を使用する例を次に示します。 https://github.com/CrowdStrike/pyspresso

回答

JByteModを使用してクラスのバイトコードを編集できます。新しいメソッドを作成したり、メソッド、フィールドを削除したり、アクセスを変更したりすることもできます。

非常に使いやすく、jarをロードして、編集するクラスを選択するだけです。

JByteMod: https://github.com/GraxCode/JByteMod-Beta/releases

コメント

  • JByteModは、残念ながら2年間で'更新されていません。著者は、似たような性質ではありますが、さまざまなプロジェクトに飛びつきました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です