Degustação de Detours !
Tá ficando ruim para alguns vendedores de hacks.....hauhsuahsuahsuahushau
Code:
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);
}

