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