请高手指导!HOOK了IE的send,无法访问网页

weixd989 2010-04-25 10:03:12
我HOOK了IE调用的send函数,指向我编写的Mysend,经测试,Mysend函数已被调用,可以读取到参数buf的内容。
在Mysend中,我准备调用原始的send函数,发送出数据,让IE能够正常访问网页,但在IE中输入网址后,发现IE被自动关闭了,不清楚问题在哪里,请高手帮我看下!
下面是我的Mysend函数:
int WINAPI Mysend(SOCKET s,const char FAR *buf,int len,int flags)
{
RestoreJMPinonemod(hk01); //恢复API函数send的原内存地址
int sendlen=send(s,buf,len,flags); //调用send,完成IE发送数据的目的
ReplaceJMPinonemod(hk01); //将send调用指向我的函数Mysend
return sendlen;
}

...全文
172 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
silencenet 2011-11-26
  • 打赏
  • 举报
回复
在多线程中不应使用这种 恢复HOOK->调用->再HOOK 的方式

Hook时,将覆盖的代码(要计算好这里的指令长度) 另外申请内存(A)保存好,在最后加个Jmp到 覆盖后的指令地址

在你的MySend中,如果要调用原Send, 只要Call A

注意:在HOOK时,需要保证被覆盖的指令长度,不能把指令拆开

Lactoferrin 2011-11-25
  • 打赏
  • 举报
回复
你这样搞,多线程一起send就很容易崩溃
thegfw 2011-11-24
  • 打赏
  • 举报
回复
问题解决了?
楼主呢?
xie0525 2010-05-11
  • 打赏
  • 举报
回复
这样的实现方式应当是没有问题的,我也这么写过,应当是其他方面的问题
leon7909 2010-05-07
  • 打赏
  • 举报
回复
其实可以不用替换来替换去这么复杂,如果IE使用的是SEND在发送数据,那你就把SEND给HOOK掉,在SEND的内部调用WSASend来发送。
net_mz 2010-05-06
  • 打赏
  • 举报
回复
你狠 呵呵

你hook了 send 然后在你代码里面调用hook 那不是重入了?

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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