Внедрение класса в JVM и взаимодействие с существующими классами - PullRequest
2 голосов
/ 10 января 2011

Я хочу добавить свой класс Java в существующее приложение Java в Windows.

Я нашел статью, описывающую метод с использованием CreateRemoteThread - java-code-инъекция через winapis

Но не ясно, может ли внедренный класс «соединиться» с существующими классами и вызвать их.

Кто-нибудь знает, возможно ли это? Есть ли в JNI функции, которые можно использовать для поиска и получения ссылки на уже запущенные классы?

1 Ответ

2 голосов
/ 10 января 2011

Я уверен, что есть другие сложные способы сделать то, что вы хотите сделать (например, с помощью API Java инструментария). однако, вероятно, есть гораздо более простой способ.

  1. найдите класс, который является основным классом для приложения
  2. декомпилировать класс в код Java.
  3. добавьте простой хук для вызова вашего пользовательского кода (или измените этот класс в соответствии с вашими потребностями)
  4. перекомпилируйте измененный класс и замените файл класса в соответствующем банке
  5. запустите ваше модифицированное приложение!
...