LPVOID DetourCreate(BYTE *src, CONST BYTE *dst, CONST INT len)
{
BYTE *jmp = (BYTE*)malloc(len + 5);
DWORD dwBack;
VirtualProtect(src, len, PAGE_READWRITE, &dwBack);
memcpy(jmp, src, len);
jmp += len;
jmp[0] = '\xE9';
*(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
src[0] = '\x90';
src[1] = '\xD1';
src[2] = '\xC8';
src[3] = '\x85';
src[4] = '\xC0';
src[5] = '\xE9';
*(DWORD*)(&src[6]) = (DWORD)(dst - src) - 10;
for (INT i = 10; i < len; i++) src[i] = 0x90;
VirtualProtect(src, len, dwBack, &dwBack);
return (jmp - len);
}
LPVOID DetourCreate(BYTE *src, CONST BYTE *dst, CONST INT len)
{
BYTE *jmp = (BYTE*)malloc(len + 5);
DWORD dwBack;
VirtualProtect(src, len, PAGE_READWRITE, &dwBack);
memcpy(jmp, src, len);
jmp += len;
jmp[0] = '\xE9';
*(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
src[0] = '\xD1';
src[1] = '\xC8';
src[2] = '\x85';
src[3] = '\xC0';
src[4] = '\x90';
src[5] = '\xE9';
*(DWORD*)(&src[6]) = (DWORD)(dst - src) - 10;
for (INT i = 10; i < len; i++) src[i] = 0x90;
VirtualProtect(src, len, dwBack, &dwBack);
return (jmp - len);
}
LPVOID DetourCreate(BYTE *src, CONST BYTE *dst, CONST INT len)
{
BYTE *jmp = (BYTE*)malloc(len + 5);
DWORD dwBack;
VirtualProtect(src, len, PAGE_READWRITE, &dwBack);
memcpy(jmp, src, len);
jmp += len;
jmp[0] = '\xE9';
*(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
src[0] = '\xD1';
src[1] = '\xC8';
src[2] = '\x90';
src[3] = '\x85';
src[4] = '\xC0';
src[5] = '\xE9';
*(DWORD*)(&src[6]) = (DWORD)(dst - src) - 10;
for (INT i = 10; i < len; i++) src[i] = 0x90;
VirtualProtect(src, len, dwBack, &dwBack);
return (jmp - len);
}
this is the detour im using... i get errors... i just paste this in to the detour.h and build it but then it gives me errors about tpresent in main.cpp...
the only error i get in detour.h is: function 'LPVOID DetourCreate(BYTE *,const BYTE *,const INT)' already has a body line 30