gpt4 book ai didi

c++ - 通过 recv-hook 中的 SOCKET-identifier 获取远程地址

转载 作者:太空狗 更新时间:2023-10-29 23:17:49 25 4
gpt4 key购买 nike

我在 Ws2_32.dll 中的 recv 函数上安装了一个钩子(Hook)。现在,当 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),但我没有任何信息。

最佳答案

我找到了解决方案……我只是失败了。正确的代码是:

inet_ntoa((*(sockaddr_in*)&addr).sin_addr);

有效。

关于c++ - 通过 recv-hook 中的 SOCKET-identifier 获取远程地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16450644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com