我目前正在尝试通过注入 DLL 并绕过几个函数来向基本服务器应用程序添加一些功能,但我遇到了存储的 IP 地址在两次调用之间损坏的问题。
首先,我绕过“接受”并解析一些值,然后将它们输入到连接类中并将其添加到列表中。
接受绕行功能:
std::list<Connection*> ConnectionsList;
SOCKET WINAPI MyAccept(SOCKET s, sockaddr *addr, int *addrlen)
{
...
ConnectionsList.push_back(new Connection(ClientSocket, ipstr));
...
}
连接类:
SOCKET s;
char * ipAddress;
char * playerName;
Connection::Connection(SOCKET sock, char * address)
{
s = sock;
ipAddress = address;
}
我还绕道了“closesocket”,此时我想从连接列表中删除套接字。如果我在此函数上设置断点,则 IP 地址似乎已损坏。
有谁知道为什么会这样?