0
所以我有WSASend繞道,當然可以調用它使一切正常工作,但有些數據包(在我分析它們後)我想阻止發送,所以我不能調用原創功能。調用代碼似乎知道某些事情出了問題,無論我返回什麼。阻止繞道WSASend中的數據包
當一切正常時,WSASend應該返回0。具有諷刺意味的是,如果我試圖阻止時返回0,則調用代碼似乎在等待某個事件,使所有連接延遲並最終關閉。
代碼:
int WINAPI myWSASend(SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesSent, DWORD dwFlags, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
if(lpBuffers->buf[2] == 0x66 && lpBuffers->buf[3] == 0x78)
{
FILE *fp = fopen("party_sploit.txt", "a");
fprintf(fp, "0x7866 catched! len: %lu\n", lpBuffers->len);
for (unsigned int i = 0; i < lpBuffers->len-8; i = i + 8)
{
fprintf(fp,
"%02X %02X %02X %02X %02X %02X %02X %02X"
"\t\t%c %c %c %c %c %c %c %c\n",
static_cast<unsigned char>(lpBuffers->buf[i]),
static_cast<unsigned char>(lpBuffers->buf[i+1]),
static_cast<unsigned char>(lpBuffers->buf[i+2]),
static_cast<unsigned char>(lpBuffers->buf[i+3]),
static_cast<unsigned char>(lpBuffers->buf[i+4]),
static_cast<unsigned char>(lpBuffers->buf[i+5]),
static_cast<unsigned char>(lpBuffers->buf[i+6]),
static_cast<unsigned char>(lpBuffers->buf[i+7]),
(drawable(lpBuffers->buf[i])) ? static_cast<unsigned char>(lpBuffers->buf[i]) : '.',
(drawable(lpBuffers->buf[i+1])) ? static_cast<unsigned char>(lpBuffers->buf[i+1]) : '.',
(drawable(lpBuffers->buf[i+2])) ? static_cast<unsigned char>(lpBuffers->buf[i+2]) : '.',
(drawable(lpBuffers->buf[i+3])) ? static_cast<unsigned char>(lpBuffers->buf[i+3]) : '.',
(drawable(lpBuffers->buf[i+4])) ? static_cast<unsigned char>(lpBuffers->buf[i+4]) : '.',
(drawable(lpBuffers->buf[i+5])) ? static_cast<unsigned char>(lpBuffers->buf[i+5]) : '.',
(drawable(lpBuffers->buf[i+6])) ? static_cast<unsigned char>(lpBuffers->buf[i+6]) : '.',
(drawable(lpBuffers->buf[i+7])) ? static_cast<unsigned char>(lpBuffers->buf[i+7]) : '.'
);
}
fprintf(fp, "\n-------------------------------------------------------------------\n");
fclose(fp);
if(lpBuffers->len < 26)
{
lpNumberOfBytesSent = (LPDWORD)lpBuffers->len;
return 0;
}
else
{
return (oWSASend)(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, lpOverlapped, lpCompletionRoutine);
}
}
else
{
//No filtered packet recieved, proceed
return (oWSASend)(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags, lpOverlapped, lpCompletionRoutine);
}
}
人?請即時嘗試修復攻擊我的遊戲服務器.. – LemoniscooL