1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
void WINAPI MainThread( )
{
//This function will run when we attach the DLL
Main(); //located in Form1.cpp, This will load the form and display it
}
//------------------------------------------------------------------
DETOUR_TRAMPOLINE(int WINAPI real_send(SOCKET Socket, char * buffer, int strlen, int flags),send);
//int WINAPI my_send(SOCKET Socket, char FAR* buffer, int strlen, int flags);
int WINAPI my_send(SOCKET Socket, char FAR* buffer, int strlen, int flags){
send(Socket,packet,10,0);
Sleep(500);
send(Socket,packet2,10,0);
return real_send(Socket, buffer, strlen, flags);
}
//------------------------------------------------------------------
//------------------------------------------------------------------
HINSTANCE hinst;
__declspec( dllexport ) LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
return CallNextHookEx(0, nCode, wParam, lParam);
};
//------------------------------------------------------------------
BOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpvReserved )
{
switch ( dwReason ) {
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hModule);
if ( CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MainThread, NULL, 0, NULL) == NULL ) {
return FALSE;
}
//------------------------------------------------------------------
DetourFunctionWithTrampoline((PBYTE)real_send,(PBYTE)my_send);
break;
//------------------------------------------------------------------
break;
case DLL_PROCESS_DETACH:
//------------------------------------------------------------------
DetourRemove((PBYTE)real_send,(PBYTE)my_send);
//------------------------------------------------------------------
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
|