Winsock2的的recv()钩到远程进程
-
19-09-2019 - |
题
我试图勾自定义的recv()winsock2.0方法来远程进程,让自己的函数执行,而不是一个在这个过程中,我一直在谷歌上搜索这个,我发现了一些非常好的例子,但他们缺乏描述
typedef (WINAPI * WSAREC)( SOCKET s, char *buf, int len, int flags ) = recv;
现在我的问题是,这是什么意思,或做,这是某种指针到真正的recv()函数?
和然后为自定义功能的其他的代码
int WINAPI Cus_Recv( SOCKET s, char *buf, int len, int flags )
{
printf("Intercepted a packet");
return WSAREC( s, buf, len, flags ); // <- What is this?
}
很抱歉,如果这些问题听起来很基本的,我才开始学习2或3个星期前。 感谢。
解决方案
你在哪里找到这样的例子吗?
的第一行试图定义新类型WSAREC,它是一个指向具有相同签名的recv()
的函数。不幸的是,它也试图声明这种类型的变量来存储recv()
函数的地址。由于功能缺乏一个返回类型的类型定义是错误的。因此它不Visual Studio 2003中下编译。
您可以使用具有更多的运气:
int (WINAPI * WSAREC)( SOCKET s, char *buf, int len, int flags ) = &recv;
它声明只类型的变量“函数指针”,其存储recv()
的地址
现在所述第二片段是具有相同的签名作为recv()
function,打印的消息的功能,然后通过调用上述所声明的函数指针原始recv()
。
下面的代码只显示了如何通过指针调用一个函数:它不会在目前的过程中更换任何东西。
另外,我不知道你可以与另一个进程干扰,并在你的意志代替一个功能。这将是该系统的安全构成极大的威胁。但你为什么要这么做,在第一个地方??
不隶属于 StackOverflow