undefine
Участник
- 35
- 14
как поставить хук на функцию? не вызов функции, а на саму функцию
пытался так
но игра просто вылетала
пытался так
C++:
typedef void(__thiscall* CEntity_Render_t)(CEntity* entity);
CEntity_Render_t fpOriginalRender;
void* Create_Hook(
BYTE* src,
const BYTE* dst,
const int len)
{
BYTE* jmp;
DWORD dwback;
DWORD jumpto, newjump;
VirtualProtect(src, len, PAGE_READWRITE, &dwback);
if (src[0] == 0xE9)
{
jmp = (BYTE*)malloc(10);
jumpto = (*(DWORD*)(src + 1)) + ((DWORD)src) + 5;
newjump = (jumpto - (DWORD)(jmp + 5));
jmp[0] = 0xE9;
*(DWORD*)(jmp + 1) = newjump;
jmp += 5;
jmp[0] = 0xE9;
*(DWORD*)(jmp + 1) = (DWORD)(src - jmp);
}
else
{
jmp = (BYTE*)malloc(5 + len);
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;
for (int i = 5; i < len; i++)
src[i] = 0x90;
VirtualProtect(src, len, dwback, &dwback);
return (jmp - len);
}
fpOriginalRender = (CEntity_Render_t)Create_Hook(
(BYTE*)0x534310,
(BYTE*)hkEntityRender,
0x2F);
но игра просто вылетала