用API HOOK 改变 recv等接收函数问题!不知道怎么IE等浏览器都断开了

yuwen123441 2008-04-26 10:50:25
用API HOOK 改变 recv等接收函数问题!只要加上钩子,不知道怎么IE等浏览器都断开了,中间我没有过滤数据!
代码如下!

int WINAPI hook_recv(SOCKET s, char FAR* buf, int len, int flags )
{
CShareMemory sm("IPPACK_RECEIVE",sizeof(CMessageData)+len,TRUE);
CMessageData *pData = (CMessageData*)sm.GetBuffer();

g_recv.Unhook();
int Ret = recv(s,pData->data(),len,flags);
g_recv.Rehook();

pData->scoket = s;
pData->dwThreadId = ::GetCurrentThreadId();
pData->DataLength = Ret;
pData->Recvbuf = buf;
int Rlen;
getpeername(s,(sockaddr *)&pData->SockAddr,&Rlen);

DWORD mipaddr = pData->SockAddr.sin_addr.S_un.S_addr;


memcpy(buf, pData->data(), pData->DataLength);// 返回数据
return Ret;

}
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdpdww 2008-04-28
  • 打赏
  • 举报
回复
lz建议你用detours试一试,我同事做论坛发帖管理功能的时候,也是hook的winsock,当时的错误就是几乎所有和网络的通信都不正常,后来他用了detours,然后就弄好了,到现在也没找到原因,所以建议是试试detours
yuwen123441 2008-04-28
  • 打赏
  • 举报
回复
upupup
yuwen123441 2008-04-28
  • 打赏
  • 举报
回复
help!
yuwen123441 2008-04-28
  • 打赏
  • 举报
回复
upup
cnzdgs 2008-04-26
  • 打赏
  • 举报
回复
发先两点问题隐患,不过应该与浏览器断开无关,错误可能与上面这段代码无关:
1、没有判断recv的返回值;
2、没有保护LastError。
yuwen123441 2008-04-26
  • 打赏
  • 举报
回复
UPUPUP
wushigang 2008-04-26
  • 打赏
  • 举报
回复
估计是你的那两个hook不行,保证对了没有,汇编JMP不容易啊
g_recv.Unhook();
g_recv.Rehook();
ouyangzhongmin 2008-04-26
  • 打赏
  • 举报
回复
你的代码并没有错.我看你也应该是看了windows程序设计这本书.
yuwen123441 2008-04-26
  • 打赏
  • 举报
回复
up

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧