我正在制作一个应用程序来操作send和recv,使用send执行它很容易,但我无法弄清楚如何伪造或替换recv。
我尝试做的是,例如,如果程序收到"Hello"
,请对其进行过滤并使程序认为收到"Bye"
。
以下是我尝试过滤recv的代码部分:
int WINAPI MyRecv(SOCKET s, char* buf, int len, int flags)
{
int i = 0;
int ret = pRecv(s, buf, len, flags);
while (i < ret && buf)
{
if (strncmp(buf, "Hello\0", 5) == 0)
{
strcpy(buf,"Bye\0");
}// End of if
int len = strlen(buf) +1;
buf += len;
i += len;
}//End of While
return ret;
}//End of Function
实际上这种方法很有效,但是在收到"Hello"
之后尝试使用下一个调用来执行此操作并且没有意图,我想替换包含"Hello"
的实际数据包并将其更改为"Bye"
答案 0 :(得分:-1)
通过注入DLL并将原始函数绕过钩子函数来钩住函数。这是我使用的x86绕道代码的一个例子。
20 = FILES
20 {
...
maxItems = 1
...
}
如果你无法弄清楚,最好开始研究。