2014-12-08 3 views
1

게임 프로세스의 send 및 recv 함수를 연결했습니다. 이제는 보낸 내용과받은 내용을 처리 할 수 ​​있습니다.시뮬레이션 패킷 전송 및 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를 시뮬레이트 할 수 있습니까?

+0

핸들을 사용하여 send()를 다시 호출하기 위해 s을 사용하려고했습니다. 그러나 didnt는 일한다. –

+0

어떤 방법으로 작동하지 않습니까? – wakjah

+0

프로세스가 충돌합니다. 나는 전화를 걸 때와 같은 방식으로 전화를 걸었다. 'send (s, buf, len, flags); 나는 훅 된 send로부터 전역 변수에 s와 flags를 저장하고, 같은 플래그와 s를 사용하여 보내려고했다. 그러나 프로세스가 충돌합니다. –

답변

0

훅 수신 기능이 호출되면 필요에 따라 실제 보내기 및 수신 기능을 호출하십시오. 발신자에게 보낼 데이터가 있으면 발신자에게 반환하십시오. send가 호출되면 데이터를 보내고 서버에 아무것도 보내지 않을지 결정하고 send 및 receive를 호출하여 원하는대로 서버와 통신하십시오.

+0

후크 기능 중 send 및 recv OUT을 호출하려고합니다. –

+1

@ ThiagoMarquezini 맞습니다. 후킹 (hooking) 함수에서 필요한 경우 서버에'send'와'recv'를 할 수 있습니다. –

+0

후킹에 대한 추악한 비트에는 [WSASend] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms742203%28v=vs)와 같이 다양한 후크 기능이 필요합니다. 85 % 29.aspx). 필터를 사용하는 것은 후킹보다 훨씬 똑똑 할 수 있습니다. –

관련 문제