Originally Posted by
Coder.UnkNóia
funciona em todos os Windows [XP (SP 1, SP 2 e SP3) - Vista (SP 1 e SP 2) - Windows 7 (SP 1) - Windows 8 - Windows 8.1]. Incluindo 32 bits e 64 bits.
Código:
[HTML]LPVOID CreateDetour(BYTE *src, CONST BYTE *dst)
{
DWORD dwBack;
BYTE *jmp = (BYTE*)malloc(17);
memcpy(jmp, src, 12);
jmp[12] = '\xE9';
*(DWORD*)(&jmp[13]) = (DWORD)(src - jmp) - 5;
VirtualProtect(src, 12, PAGE_READWRITE, &dwBack);
memcpy(src, "\xB8\x90\x90\x90\x90\x05\x90\x90\x90\x90\xFF\xE0" , 12);
*(DWORD*)(&src[1]) = 0x1FE;
*(DWORD*)(&src[6]) = (DWORD)(dst) - 0x1FE;
VirtualProtect(src, 12, dwBack, &dwBack);
return jmp;
}[/HTML]
Modo de uso:
Código:
[HTML]retPresent = (Present)CreateDetour((PBYTE)dwTable[17], (PBYTE)hookPresent);[/HTML]