well i want to create a detour to my custom injected function so a code like that works
void *DetourCreate(BYTE *src, const BYTE *dst)
{
int len = 5;
BYTE* jmp = (BYTE*)malloc(len + 5);
DWORD dwBack;
VirtualProtect(src, len, PAGE_EXECUTE_READWRITE, &dwBack);
memcpy(jmp, src, len);
jmp += len;
jmp[0] = 0xE9;
*(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
src[0] = 0xE9;
*(DWORD*)(src + 1) = (DWORD)(dst - src) - 5;
VirtualProtect(src, len, dwBack, &dwBack);
return(jmp - len);
}
but i find it irritating to use opcodes so is there a way to use __asm
instead ? like this pseudo code for instance
void DetourCreate(byte *src, const byte *dst)
{
DWORD dwBack;
VirtualProtect(src, sizeof(*dst), PAGE_EXECUTE_READWRITE, &dwBack);
*src = __asm{
call dst
};
VirtualProtect(src, sizeof(*dst), dwBack, &dwBack);
}