2011-01-09 10 views
2

Javaクラスを既存のJavaアプリケーションにWindows上で注入したいとします。JVMへのクラスの注入と既存のクラスとのやりとり

私はCreateRemoteThread使用法説明した記事発見 - java-code-injection-via-winapis

をしかし、注入されたクラスは既存のクラスに「接続」し、それらを呼び出すことができるかどうかは明確ではありません。

これが可能かどうかは誰にも分かりますか? JNIには、すでに実行中のクラスを検索して参照するための関数がありますか?

答えて

2

私は、あなたがやりたいことを行うための他の複雑な方法があると確信しています(例えば、Java instrumentation apisを使用して)。しかし、おそらくもっと簡単な方法があります。

  1. Javaコードにクラスデコンパイルアプリケーション
  2. のメインクラスであるクラスを見つけます。
  3. が変更されたクラスを再コンパイルし
  4. を変更したアプリケーションを実行し、関連するjarファイルにクラスファイルを置き換える(あなたのニーズに合わせてか、そうでない場合は、このクラスを変更)、カスタムコードを呼び出すために、単純なフックを追加します!
+0

私はJavaの専門家ではありません。クラスを再コンパイルするためには、クラスが使用する他のモジュールのソースコードにアクセスする必要があります。 – Meh

+0

Javaコードはクラス(通常はjarに含まれています)に対してコンパイルします。アプリケーション内のクラスファイルを再コンパイルできるはずです。 – jtahlborn

関連する問題