我HOOK了IE的RECV函数....步骤如下
1.::GetProcAddress(::GetModuleHandle(L"ws2_32"),"recv");取得recv的地址
2.修改这个地址对应的指令为jmp xxx这个xxx是我的函数的地址
3.xxx里的代码如下
 _asm
  {   pushad
  push [esp+0x30]     ;flags
  push [esp+0x30]     ;bufsize
  push [esp+0x30]     ;buffer
  push [esp+0x30]     ;Socket   
  call RecvData
  mov ea,eax ;这个ea是我在外部定义的一个int变量
  popad
  mov eax,ea
  retn 0x10  }4.下面是RecvData函数代码
CString str;
DWORD dwNumberOfBytesWrite;
DWORD dwNumberOfBytesRead;
::WriteProcessMemory(::GetCurrentProcess(),p1,buf1,5,&dwNumberOfBytesWrite);//恢复原始代码
int ret=::recv(s,buf,len,flags);
if(ret==-1)                     //问题貌似出现在这里.如果我把这个if全部删掉IE能正常访问.但是如果我就
{                               //这样留着就会出问题访问任何网站直接弹出接收失败,错误代码100053
                                         //请高手讲解一下

str.Format(L"接收失败,错误代码%d",::GetLastError()); 
MessageBox(NULL,str,L"",0);
}
::WriteProcessMemory(::GetCurrentProcess(),p1,NewAddress,5,&dwNumberOfBytesWrite);//改回继续HOOK代码
return ret;