jarファイルに任意のコードを挿入する方法はありますか?たとえば、jarファイルが与えられると、プログラムはクラスXのメソッドmにinit関数を挿入し、特定の条件をチェックし、条件が満たされない場合は終了します。これはできますか?
1619 次
1 に答える
0
jarが署名されている場合-いいえ**。jarが署名されていない場合、そうです、もちろんこれは可能です。クラスのメソッドを変更して、クラス全体を追加または置換することから。
JARファイルは、実際にはクラスファイル(コンパイルされたバイトコード、文字列、その他のリテラル、およびその他の必要な情報で構成されるソースプログラムのバイナリ表現)を含むZIPファイルです。これらのクラスファイルは、JavaVM仕様で定義された形式になっています。どのファイルも何らかの方法で読み取られて処理される可能性があるため、クラスファイルも読み取り変更されてから書き戻される可能性があります。
何を変更/追加/削除する必要があるかを判断することに関しては、もちろん、プログラムの動作を変更し、JavaVMアセンブリ言語やリバースエンジニアリングされたソースコードを読み取るのに十分なスキルを持っている人間の仕事です。通常は理解するのが難しいがそれでも可能であるJavaソースを生成する利用可能なJavaデコンパイラがいくつかあります。
** jarが改ざんされているという事実が重要でない場合は、署名を削除しても変更を加えることができます
于 2012-10-22T04:37:59.700 に答える