Я подключил функции send и recv для игрового процесса. Теперь я могу справиться с тем, что отправлено, а что получено.
Мои функции:
int __stdcall nSend(SOCKET s, char *buf, int len,int flags)
{
UnHookFunction("ws2_32.dll", "send", KSendHook);
int result = send(s, buf, len, flags); // Send data
HookFunction("ws2_32.dll", "send", (LPVOID*) nSend, KSendHook);
return result;
}
int __stdcall nRecv(SOCKET s, char *buf, int len, int flags)
{
UnHookFunction("ws2_32.dll", "recv", KRecvHook);
int result = recv(s, buf, len, flags); // Receive data
HookFunction("ws2_32.dll", "recv", (LPVOID*) nRecv, KRecvHook);
return result;
}
Мой вопрос:
Я подключил функцию, чтобы я мог только интерпретировать и изменять то, что отправлено и получено.
Мне нужно отправлять новые структуры пакетов, как если бы я был в игре. Используя тот же сокет.
Как я могу симулировать send и recv для одного и того же сокета подключенных функций?
Когда вызванная вами функция приема вызывается, вызывайте реальные функции отправки и получения по мере необходимости. Если у вас есть данные для возврата вызывающей стороне, верните их вызывающей стороне. Когда вызывается send, возьмите отправленные данные, решите, хотите ли вы отправлять что-либо на сервер или нет, и позвоните send и receive, чтобы общаться с сервером так, как вам нравится.