我正在爲朋友遊戲服務器寫封包加密。 客戶端正在使用ws2_32 recv/send,但服務器使用WSARecv/WSASend。WSARecv Detour hook crypt
我設法加密/解密send/recv/WSASend,但WSARecv似乎不可能。 我使用與recv相同的方法,但它似乎不工作。
int WINAPI MyWSARecv(SOCKET socket, LPWSABUF lpBuffers, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
LPWSABUF buffers = lpBuffers;
int ret = pWSARecv(socket, buffers, dwBufferCount, lpNumberOfBytesRecvd, lpFlags, lpOverlapped, lpCompletionRoutine);
cryptPacket(buffers->buf, buffers->len);
lpBuffers = buffers;
return ret;
}
任何想法,將不勝感激。
爲什麼使用Detours而不是直接調用MyWSARecv?另外,可以向WSARecv顯示你的代碼在哪裏創建鉤子? – selbie
我很確定這個鉤子能夠工作,因爲我設法記錄緩衝區。 http://pastebin.com/NzE66TWD這是代碼。 – Asmo
那到底是什麼問題?你需要更多的描述性內容,而不僅僅是說「看起來不起作用」。 – selbie