2012-05-15 47 views
2

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

+0

请说明你自己到底做了些什么以及你收到了哪些错误。 – vyegorov

回答

2

您需要钩住accept函数。 您可以使用库例如MS Detours(早期版本是免费的,你可以使用版本1.5,只是谷歌它)。 呼叫

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

它会给你的指针接受功能。 然后你可以绕道它通过呼吁

DetourFunction(a,&Yourfunction) 

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

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

+1

您不需要汇编器来重定向DLL函数,您可以直接修改PE Imports表。 –