java - Injicere en klasse i JVM og interagere med eksisterende klasser

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil injicere min Java-klasse i en eksisterende Java-applikation, på Windows.


Jeg fandt en artikel, der beskriver en metode ved hjælp af CreateRemoteThread - java-kode-injection-via-winapis [2]


Men det er ikke klart, om den injicerede klasse kan 'forbinde' med de eksisterende klasser og kalde dem.


Er der nogen der ved, om det er muligt? Er der funktioner i JNI, som kan bruges til at søge og få en reference til allerede kørende klasser?

Bedste reference


Jeg er sikker på, at der er andre komplicerede måder at gøre, hvad du vil gøre (f.eks. ved at bruge java instrumentation apis). Men der er sandsynligvis en meget lettere måde.



  1. Find klassen, som er hovedklassen for ansøgningen

  2. dekompilere klassen i java kode.

  3. Tilføj en simpel krog for at påberåbe din brugerdefinerede kode (eller på anden måde ændre denne klasse efter dine behov)

  4. genkompil den ændrede klasse og erstat klassefilen i den relevante krukke

  5. Kør dit ændrede program!