Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: ExtTextOut oder DrawText hooken?

  Alt 13. Jun 2010, 03:21
Beispielcode habe ich gerade keinen (auch wenn ich hier im Forum schon mal welchen gesehen habe), aber die meisten API-Funktionen haben am Anfang etwas "Dummy-Code" (mov edi, edi o.ä.), den man z.B. mit einer JMP-Operation überschreiben kann, um das Hooken zu erleichtern.
Du müsstest also im fremden Prozess einen Speicherbereich alloziieren, in den du deinen Code schreibst, die ausgeführt werden soll, und dann den Dummy-Bereich in der zu hookenden Funktion mit einem JMP- oder CALL-Befehl auf diesen Bereich überschreiben. Natürlich darf am Ende deines Codes ein Rücksprung (bzw. Return) auf den Originalcode nicht fehlen.

Eventuell wäre es noch sinnvoll, den Originalcode, der überschrieben wird, auch noch irgendwo zu sichern und wiederum innerhalb der eigenen Funktion aufzurufen, für den Fall, dass schon ein anderer Hook existiert.
  Mit Zitat antworten Zitat