拦截套接字功能(窗口)

时间:2012-05-15 15:46:11

标签: c++ windows sockets intercept

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

1 个答案:

答案 0 :(得分:2)

你需要挂钩接受功能。 您可以使用库来完成此操作,例如MS Detours(早期版本是免费的,您可以使用版本1.5,只需谷歌)。 致电

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

它将为您提供接受函数的指针。 然后你可以通过调用

来绕道而行
DetourFunction(a,&Yourfunction)

DetourFunction将新指针返回到"接受",所以一定要在" YourFunction"结束时调用它。确保程序不会崩溃。

或者,您可以使用Inlineassembler自行重定向该功能。这当然要复杂得多。