我recv
在 Ws2_32.dll 的 -function 上安装了一个钩子。现在,当recv
被调用时,我想获取有关谁发送信息的信息。所以我尝试了以下方法来获取发件人的远程地址,但我得到的地址总是错误的,对于互联网来说非常不现实(例如我得到 2.0.0.80)。
我究竟做错了什么?
int __stdcall TcpHook::my_recv(SOCKET s, char *buf, int len, int flags)
{
sockaddr addr;
int len2 = sizeof(addr);
getpeername(s, &addr, &len2);
char *sender = inet_ntoa(*(in_addr*)&addr);
// print out sender etc.
return tcpHook.recvOriginal(s, buf, len, flags);
}
s
有趣的一点是,尽管通过了(类型SOCKET
),但我没有任何信息。