可以使用AppInit_DLL来挂钩Ws2_32.dll的API吗?

时间:2013-02-11 00:12:56

标签: c++ winapi hook winsock winsock2

我正在寻找将出站TCP / IP连接从Windows客户端上的特定端口重定向到其他端口号的方法。 (这需要提供从端口445重定向SMB连接的功能,用于文件和打印机共享。)

除了挂钩WinSock API并更改端口之外,我找不到办法。我找到了AppInit_DLLs技术,我想知道它是否可以用来挂钩Ws2_32.dll(似乎包含WinSock API)?

我的想法是挂钩通常设置端口号的connectaccept API。这只是一个想法,所以我真的很感激有人接受这个,然后才真正开始编码......

2 个答案:

答案 0 :(得分:1)

为什么不呢?是的,这是可能的,但不要忘记在挂钩之前加载DLL。因为在加载user32.dll时加载AppInit(并且在加载ws2_32之前肯定会加载)。

看看弯路,或尝试自己制作内联钩子。请注意多线程应用程序,您必须使用多线程安全挂钩。

答案 1 :(得分:-2)

不幸的是,这是不可能的。您最好的办法是制作一个代理DLL,替换您希望与自己挂钩的自定义方法。