Jarコード注入
1252 ワード
しばらくブログを書いていませんが、主な原因は期末試験と実家に帰って新年を祝うことです.この時間は基本的に関連する内容を見ていませんが、共有できるものがたくさんあります.
前のログで述べたように、Javaはバイトコードから遊ぶことができます.Javassistというクラスライブラリを使用することで、バイトコードの操作を容易に行うことができます.
この角度から言えば、私たちがこれまで考えなかった面も多く実施することができます.例えば、このようなjarパッケージがあり、参照開発が必要であるため、ある方法の実行前または後に注入コードを加えることができ、同時にこの方法は簡単な解読作業を行うことができます.
主に使用するツールはjarパッケージ、Javassistクラスライブラリです.次に簡単な例を説明します.この例は、パッケージされたjarにコードを注入する方法を示します.
まず、この簡単なクラスコードを見てみましょう. main関数が含まれているのは,主にコード注入後の効果を感じるためである.
次に、実行の効果を見てみましょう.
これが私たちがコードにmain関数を含む用途です.
次に、私たちの注入コードフラグメントです.最初のポイントはgeckoです.JArはclasspoolのclasspathに参加し、Gecko.classはこのjarから抽出され,getDeclearMethods()を用いて現在のクラスのすべての方法を得,混同されたコードに対処することができる. 第2点は、insertBefore()とinsertAfter()を使用します.自分の注入コードをclassファイルに書き込みます.その後、書き込まれたclassをファイルに書き込みます.
これで、プロジェクトのディレクトリに書き込まれたclassファイルが表示されます.
次にjarパッケージコマンドを使用します.このコマンドの使い方は簡単で、主なポイントはこの2点です.
私たちのjarはすでにパッケージ化されているので、このパッケージを解凍してclassファイルを置き換えるだけです.その後、次のコマンドを実行します.
それからaddingの情報が山ほど見えて、私たちのclassファイルを示して、ディレクトリの下でjarファイルを見ることができます.
その後、
さあ、私たちの実験は成功しました.それから他の面白いことをすることができます!
変換元:http://mikecoder.net/?post=71
前のログで述べたように、Javaはバイトコードから遊ぶことができます.Javassistというクラスライブラリを使用することで、バイトコードの操作を容易に行うことができます.
この角度から言えば、私たちがこれまで考えなかった面も多く実施することができます.例えば、このようなjarパッケージがあり、参照開発が必要であるため、ある方法の実行前または後に注入コードを加えることができ、同時にこの方法は簡単な解読作業を行うことができます.
主に使用するツールはjarパッケージ、Javassistクラスライブラリです.次に簡単な例を説明します.この例は、パッケージされたjarにコードを注入する方法を示します.
まず、この簡単なクラスコードを見てみましょう.
次に、実行の効果を見てみましょう.
これが私たちがコードにmain関数を含む用途です.
次に、私たちの注入コードフラグメントです.
これで、プロジェクトのディレクトリに書き込まれたclassファイルが表示されます.
次にjarパッケージコマンドを使用します.このコマンドの使い方は簡単で、主なポイントはこの2点です.
私たちのjarはすでにパッケージ化されているので、このパッケージを解凍してclassファイルを置き換えるだけです.その後、次のコマンドを実行します.
jar cvfm gecko2.jar gecko/META-INF/MANIFEST.MF -C gecko .
それからaddingの情報が山ほど見えて、私たちのclassファイルを示して、ディレクトリの下でjarファイルを見ることができます.
その後、
java -jar gecko2.jar
を運転しました.さあ、私たちの実験は成功しました.それから他の面白いことをすることができます!
変換元:http://mikecoder.net/?post=71