2

我有一个程序,它加载库 test.dll,这个库使用 ws2_32.dll 创建套接字和发送/接收数据包。我可以将我的 C++ 库注入到这个进程中,但不知道如何拦截函数“socket”、“accept”的 test.dll 调用。有人可以帮我解决这个问题吗?谢谢!

4

1 回答 1

2

您需要挂钩接受功能。您可以通过使用库来做到这一点,例如 MS Detours(早期版本是免费的,您可以使用 1.5 版,只需 google 即可)。称呼

DWORD a=DetourFindFunction("Ws2_32.dll","accept")

它会给你指向接受函数的指针。然后你可以通过调用绕过它

DetourFunction(a,&Yourfunction)

.

DetourFunction 将新指针返回到“accept”,因此请确保在“YourFunction”末尾调用它以确保程序不会崩溃。

或者,您可以使用 Inlineassembler 自己重定向函数。这当然要复杂得多。

于 2012-05-15T16:06:48.893 回答