拦截套接字函数(windows)

Posted

技术标签:

【中文标题】拦截套接字函数(windows)【英文标题】:Intercept socket functions (windows) 【发布时间】:2012-05-15 15:46:10 【问题描述】:

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

【问题讨论】:

请说明您到目前为止自己做了什么以及收到了哪些错误。 【参考方案1】:

你需要 Hook 接受函数。 您可以通过使用库来做到这一点,例如MS Detours(早期版本是免费的,您可以使用 1.5 版,只需 google 即可)。 打电话

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

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

DetourFunction(a,&Yourfunction)

.

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

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

【讨论】:

您不需要汇编程序来重定向 DLL 函数,您可以直接修补 PE Imports 表。

以上是关于拦截套接字函数(windows)的主要内容,如果未能解决你的问题,请参考以下文章

在前端拦截来自外部库的 Web 套接字调用?

在 c++ 中通过套接字(发送函数)发送图片,但不接收完整(Windows)!

在 Windows 上进行 C 套接字编程时,我需要替换哪些等效的标头、函数和数据类型?

一.Windows I/O模型之选择(select)模型

Windows 套接字封装 - 未解析的外部符号

在windows系统中对套接字数据进行io时为啥不可以直接使用文件io相关函数?