Man definiert einen Exceptionhandler, dieser ist dafür zuständing, dass die eigene Funktion aufgerufen wird, aber dazu später mehr.
Will man eine Funktion überschreiben, wird das erste Byte mit einer Sperre versehen(mit der Kernel Funktion NtProtectVirtualMemory und dem Parameter PAGE_NOACCESS). Wird nun versucht diese Funktion aufzurufen, wird stattdessen der Exceptionhandler ausgelöst. Dieser ist nun, angand des Pointers der Quelle der Exception, in der Lage zu bestimmen welche Funktion aufgerufen worden war und ggf. das auslösen einer Aktion (z.B. das Aufrufen unserer eigenen Funktion).