라이브러리 test.dll을로드하는 programm가 있는데,이 라이브러리는 ws2_32.dll을 사용하여 소켓을 만들고 패킷을 보내고받습니다. 내 C++ 라이브러리를이 프로세스에 삽입 할 수 있지만 "socket", "accept"함수의 test.dll 호출을 인터셉트하는 방법을 모릅니다. 아무도이 문제로 나를 도울 수 있습니까? 감사합니다.소켓 함수 (윈도우)를 가로 채기
2
A
답변
2
수락 기능을 후크해야합니다. 라이브러리를 사용하여이를 수행 할 수 있습니다. MS Detours (이전 버전은 무료로 버전 1.5를 사용할 수 있으며 Google에서만 사용 가능). 전화는
DWORD a=DetourFindFunction("Ws2_32.dll","accept")
당신에게 동의를 함수에 대한 포인터를 제공 할 것입니다. 은 그럼 당신은
DetourFunction(a,&Yourfunction)
를 호출하여 우회 할 수 있습니다.
DetourFunction은 새 포인터를 "accept"로 반환하므로 "YourFunction"끝 부분에서 호출하여 프로그래머가 충돌하지 않도록해야합니다.
또는 Inlineassembler를 사용하여 직접 기능을 리디렉션 할 수 있습니다. 이것은 훨씬 더 복잡합니다.
+1
DLL 함수를 리다이렉트하기 위해 어셈블러가 필요하지 않습니다. PE 가져 오기 테이블을 직접 패치 할 수 있습니다. –
지금까지 직접 해본 내용과 어떤 오류가 발생했는지 보여주십시오. – vyegorov