procedure
HookFunction(
const
ATargetFunction, AHandler:
Pointer
);
const
MaxPossibleSize =
8
;
var
OldProtectionCode:
Cardinal
;
begin
VirtualProtect(ATargetFunction, MaxPossibleSize, PAGE_READWRITE, @OldProtectionCode);
try
finally
VirtualProtect(ATargetFunction, MaxPossibleSize, OldProtectionCode, @OldProtectionCode);
FlushInstructionCache(GetCurrentProcess, ATargetFunction, SizeOf(DWORD)
);
end
;
end
;