首页
社区
课程
招聘
[求助]hook recv 的神奇问题
发表于: 2009-5-5 16:51 5882

[求助]hook recv 的神奇问题

2009-5-5 16:51
5882
我hook 方式是修改头五字节,进行的HOOK RECV

处理函数应该也是没问题的
int my_recv (
  SOCKET s,      
  char FAR* buf,  
  int len,        
  int flags      
)
{
int nRet;
...................//处理代码
}

但是hook recv 时,第一包 就给返回了 -1,

后来,我就就强行的这样处理

如果返回值是 -1,那么我就返回 1 回去,

如此一来,程序居然可以正常的 recv 到数据,

得到的调试信息如图:

程序最开始

recv(728,buf, 1024 , 0);

最开始时的大小是 1024 ,因为 返回 -1错误,我强行的返回 1回去,然后被HOOK 的程序

又一直调用 recv,将长度 len--,一直到

recv(socket,buf,589,0 ) 是成功收到数据

后面的 2194 是收到另外的一个数据包,

我想问;为什么会出现这样神奇的问题呢?

注:图是刷新一次验证码的 recv 数据,

错误代码即为: GetLastError(),一直到 len == 589 时,才成功

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 121
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
LZ,我最近也在学习写HOOK RECV 和SEND的 东西

遇到一些问题,反正说来说去还是不明白他的原理和工作流程,

可以给我一些片段代码,我参考下吗?
2009-5-7 19:10
0
游客
登录 | 注册 方可回帖
返回
//