Verständnis Frage bezüglich Hooks
-
Hallo folgendes habe ich irgendwann mal zusammen gefrickelt. Meine Frage ist jetzt: Wird sowas schon als "Function Hooking" bezeichnet? Ich habe mir zu dem Thema mal etwas auf Wikipedia durchgelesen, jedoch bin ich mir nicht sicher ob ich es wirklich verstanden habe.
Prog.exe
0x00400000 push 0 0x00400004 push "xyz" 0x00400008 push "abc" 0x0040000C push 0 0x0040000D call MessageBoxA 0x0040000E retn 0x00400010 0x00400014 0x00400018 0x0040001C ..... .....
Jetzt reserviere ich mit einem anderen Programm in der Prog.exe Speicher. (Nehmen wir mal an der Reservierte Speicher fängt bei Adresse 0x00400008 an.)
Als nächstes schreibe mit WriteProcessMemory an die Adresse 0x00400008 z.b. folgenden Code.
push 0 push "Hook" push "blabla" push 0 call MessageBoxA jmp 0x00400006 ; Zum retn springen
Im Nächsten Schritt schreibe ich mit WriteProcessMemory an die Adresse 0x00400005 folgenden Code: jmp 0x00400008
-
Mist, verschrieben ...
Korrektur:
(Nehmen wir mal an der Reservierte Speicher fängt bei Adresse 0x00400018 an.)
Als nächstes schreibe mit WriteProcessMemory an die Adresse 0x00400018 z.b. folgenden Code.
-
Du hast ja nur eine Code Injection durchgefürht das ist noch kein Funktionshooking, es wird Funktionshooking , wenn du damit eine vorhandene Funktion überschreibst bsp. ExitProcess(). Außerdem solltest du den Funktionscode den du überschreiben hast speichern, sonst lässt sich die überschreibene Funktion gar nicht mehr aufrufen.