Undetected Detour Function?
Hey, is there anybody who has a DetourFunction for me?
Mine is detected..
Code:
DWORD DetourCreate(DWORD SrcVA, DWORD DstVA, DWORD Size)
{
DWORD DetourVA, dwProtect, i;
#define SIZEOF_JMP_REL 5
if (SrcVA && DstVA && Size >= SIZEOF_JMP_REL)
{
DetourVA = (DWORD) VirtualAlloc(
NULL, Size + SIZEOF_JMP_REL,
MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (DetourVA && VirtualProtect((VOID*)SrcVA, Size, PAGE_EXECUTE_READWRITE, &dwProtect))
{
for (i=0; i < Size; i++) {
*(BYTE*)(DetourVA + i) = *(BYTE*)(SrcVA + i);
}
*(BYTE*)(DetourVA + Size + 0) = 0xE9;
*(DWORD*)(DetourVA + Size + 1) = (SrcVA - DetourVA - SIZEOF_JMP_REL);
*(BYTE*)(SrcVA + 0) = 0xE9;
*(DWORD*)(SrcVA + 1) = (DstVA - SrcVA - SIZEOF_JMP_REL);
VirtualProtect((VOID*)SrcVA, Size, dwProtect, &dwProtect);
VirtualProtect((VOID*)DetourVA, Size +
SIZEOF_JMP_REL, PAGE_EXECUTE_READ, &dwProtect);
return DetourVA;
}
}
return (0);
}