Сделал так
Код:
lpOriginalSend = *(DWORD*)((DWORD)SendPacket + 1) + 5 + (DWORD)SendPacket;
SendPacket_Detour = new Detour(SendPacket, jmpSendPacket);
SendPacket_Detour->Apply();
__declspec( naked ) void _cdecl jmpSendPacket(void* This, char* format,...)
{
_asm jmp [lpOriginalSend]
}
работает. А вот так
Код:
SendPacket_Detour = new Detour(SendPacket, SendPacket_Hook);
SendPacket_Detour->Apply();
void _cdecl SendPacket_Hook(void* obj, char* format, ...)
{
va_list args;
va_start(args, format);
SendPacket_Detour->Remove();
SendPacket(obj, format, args);
SendPacket_Detour->Apply();
}
нет.
До этого пробовал ложить объект в ecx, но ничего не вышло, ибо это cdecl, а не thiscall