Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ AppInit_dll可以用于从Ws2_32.dll钩住API吗?_C++_Winapi_Hook_Winsock_Winsock2 - Fatal编程技术网

C++ AppInit_dll可以用于从Ws2_32.dll钩住API吗?

C++ AppInit_dll可以用于从Ws2_32.dll钩住API吗?,c++,winapi,hook,winsock,winsock2,C++,Winapi,Hook,Winsock,Winsock2,我正在寻找将出站TCP/IP连接从Windows客户端上的特定端口重定向到其他端口号的方法。(这需要提供从用于文件和打印机共享的端口445重定向SMB连接的功能。) 除了挂接WinSock API并在那里更改端口之外,我找不到其他方法。我发现了这项技术,我想知道它是否可以用来钩住Ws2_32.dll(它似乎包含WinSock API) 我的想法是,然后连接到通常设置端口号的API和API。这只是一个想法,所以在我真正开始编写它之前,我希望有人能接受这一点…为什么不呢?是的,这是可能的,但不要忘记

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

除了挂接WinSock API并在那里更改端口之外,我找不到其他方法。我发现了这项技术,我想知道它是否可以用来钩住Ws2_32.dll(它似乎包含WinSock API)


我的想法是,然后连接到通常设置端口号的API和API。这只是一个想法,所以在我真正开始编写它之前,我希望有人能接受这一点…

为什么不呢?是的,这是可能的,但不要忘记在挂接之前加载DLL。因为AppInit是在加载user32.dll时加载的(当然是在加载ws2_32之前)


看看迂回路线,或者试着做一个自己的内联钩子。请小心使用多线程应用程序,您必须使用多线程安全挂钩。

不幸的是,这是不可能的。你最好的办法是制作一个代理DLL,用你自己的方法替换你想钩住的自定义方法。

这些骗局往往会引起病毒扫描程序的注意。不是所有进程都加载user32,大多数SMB流量是从内核模式启动的,而不是从用户模式启动的。如果是从内核模式启动的,那么他就不能对此采取任何措施(除了司机,但可能性不大)。我假设他至少用将代码注入另一个进程来测试它。访问网络资源的应用程序通常只使用
CreateFile
ReadFile
,并让内核进行重定向。应用程序通常不打开端口并来回发送原始SMB数据包。是的,我同意Raymond的观点。它位于e级别低于user32.dll。所以没有运气。。。