我有一个程序,它加载库test.dll,该库使用ws2_32.dll来创建套接字并发送/接收数据包。我可以将我的 C++ 库注入(inject)到这个进程中,但不知道如何拦截 test.dll 函数“socket”、“accept”的调用。有人可以帮我解决这个问题吗? 谢谢!
最佳答案
你需要Hook接受函数。 您可以通过使用库来做到这一点,例如MS Detours(早期版本是免费的,您可以使用版本 1.5,只需 google 即可)。 调用
DWORD a=DetourFindFunction("Ws2_32.dll","accept")
它会给你接受函数的指针。 然后你可以通过调用
绕过它DetourFunction(a,&Yourfunction)
.
DetourFunction 将新指针返回到“accept”,因此请务必在“YourFunction”末尾调用它,以确保程序不会崩溃。
或者,您可以使用内联汇编器自行重定向函数。当然,这要复杂得多。
关于c++ - 拦截套接字函数(Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10604304/