Okay, here is my code:
Code:
#include "includes.h"
DWORD __SendPacket__ = 0x005843A0;
DWORD __GetCurrentConnection__ = 0xDEADBEEF;
DWORD __RecvPacket__ = 0xDEADBEEF;
void main(void);
void SendPacket(DWORD *pData);
void(*orig_SendPacket)(DWORD *pData);
BOOL bWantsExit = false;
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved)
{
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)main, 0, 0, 0);
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
void main(void)
{
while(!bWantsExit)
{
if(GetAsyncKeyState(VK_F11))
{
orig_SendPacket = (void(*)(DWORD*))DetourFunction((PBYTE)__SendPacket__, (PBYTE)SendPacket);
}
if(GetAsyncKeyState(VK_F12))
{
DetourRemove((PBYTE)orig_SendPacket, (PBYTE)SendPacket);
bWantsExit = true;
}
Sleep(500);
}
}
void SendPacket(DWORD *pDataStore)
{
orig_SendPacket(pDataStore);
}
I have to preserve ECX even for something like this? For now, at least...