PHP Code:
// dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
#include "stdafx.h"
#include <Windows.h>
#include <cstring>
#include "detours.h"
#include <winsock2.h>
#include <fstream>
using namespace std;
#pragma comment(lib,"detours.lib")
typedef int (WINAPI *SendFunc)(SOCKET, const char*, int, int);
typedef int (WINAPI* t_WSASend)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE );
int count = 0;
int count1 = 0;
t_WSASend o_WSASend = NULL;
SendFunc o_Send = NULL;
int WINAPI hook_WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
fstream datei;
datei.open("WSASend.txt", ios::out | ios::ate | ios::app);
count++;
datei << count << ". " << s << " " << lpBuffers << " " << lpBuffers->buf << " " << lpBuffers->len << " " << dwBufferCount << " " << lpNumberOfBytesSent << " " << dwFlags << " " << lpOverlapped << " " << lpCompletionRoutine << "\n" << endl;
datei.close();
return o_WSASend(s,lpBuffers,dwBufferCount,lpNumberOfBytesSent,dwFlags,lpOverlapped,lpCompletionRoutine);
}
int WINAPI hook_Send(SOCKET s, const char* buf, int len, int flags)
{
fstream datei;
datei.open("SendPackets.txt", ios::out | ios::ate | ios::app);
count1++;
datei << count1 << ". " << s << " " << buf << " " << len << " " << flags << "\n" << endl;
datei.close();
return o_Send(s, buf, len, flags);
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
o_WSASend = (t_WSASend)DetourFunction((PBYTE)&WSASend,(PBYTE)&hook_WSASend);
o_Send = (SendFunc)DetourFunction((PBYTE)send,(PBYTE)hook_Send);
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}