Wsock32.Dll与Ws2_32.Dll区别:CSocket在Wsock32.Dll中实现,Socket API在Ws2_32.Dll实现。
这两个Dll是两个不同层次的接口,调用关系如下:
网络应用程序->CSocket(WSock32.Dll)->Socket API(ws2_32.Dll)-> 网络传输服务进程. 
WSock32.Dll映射mswsock.dll和ws2_32.Dll两个文件。ws2_32.Dll是真正的实现。
我们知道,WS2_32.DLL导出了send、sendto、recv、recvfrom、WSASend、WSASendTo、WSARecv和WSARecvFrom,而WSOCK32.DLL也导出了send、sendto、recv、recvfrom函数(OD只能看到WSOCK32.DLL的recv、recvfrom,用VC的DEPENDS.EXE才能查看到send、sendto)。但MSDN上并没有说明WSOCK32.DLL里send、sendto、recv、recvfrom函数的原型,因此我一直认为跟WS2_32.DLL里的是完全一样的。不过在IE上HOOK的时候碰到了一些稀奇古怪的问题,用OD反汇编一下才发现:
1.WS2_32.DLL和WSOCK32.DLL的默认加载地址是一样的,各自的send、sendto函数的地址也是完全一样的,连函数里所有指令都完全一样。
2.recv、recvfrom就完全不同了,wsock32.dll的recv调用了WS2_32.DLL的WSARecv,recvfrom调用了WS2_32.DLL的WSARecvFrom,这跟WS2_32.DLL的recv、recvfrom完全不同。

因此,HOOK的时候要注意了!千万不要编写自己的recv、recvfrom函数后,为了贪图方便,就把WS2_32.DLL的recv、recvfrom函数和WSOCK32.DLL的recv、recvfrom函数都指向你编写的对应函数,这样是会出问题的。由于WS2_32.DLL的WSARecv和WSARecvFrom可用于非阻塞套接字,而WS2_32.DLL的recv、recvfrom函数只能用于阻塞套接字。WSOCK32.DLL的recv、recvfrom函数调用到了WSARecv和WSARecvFrom函数,如果你把WSOCK32.DLL的recv、recvfrom函数也指向了你编写的阻塞型recv、recvfrom函数,这会导致调用失败(异常)。错误信息可能是:无法在非阻塞套接字上立即完成所需操作。原因是应用程序使用非阻塞套接字调用到了WSOCK32.DLL的recv、recvfrom函数,但被你HOOK之后,跳到了你编写的阻塞型recv、recvfrom函数去执行,所以导致出现错误。

IE就是这样的,它的接收操作调用流程:
WININET.DLL->WSOCK32.DLL->WS2_32.DLL。

ws2_32.dll和wsock32.dll相关推荐

  1. 聊一聊ws2_32.dll和wsock32.dll

    Wsock32.Dll与Ws2_32.Dll区别 CSocket在Wsock32.Dll中实现,Socket API在Ws2_32.Dll实现  这两个Dll是两个不同层次的接口,调用关系如下:  网 ...

  2. 替换系统wsock32.dll,实现封包拦截

    // wsock32.cpp : Defines the entry point for the DLL application. //:::::::::::::::::::::::::::::::: ...

  3. [DLL劫持] 3 DLL劫持之实践 例子

    该系列文章是依据本人平时对动态链接库的学习,归纳总结,所做的学习笔记.如有错误或待改善之处,请留下您宝贵的意见或建议.   先说说DLL劫持的原理吧,以下这段来自百度百科对DLL劫持原理的说明: 由于 ...

  4. 丢失msvcr120d.dll、msvcr120.dll、msvcp120d.dll、msvcp120.dll问题解决方法

    问题描述     运行程序时出现如下错误: 还有丢失msvcr120d.dll.msvcr120.dll.msvcp120.dll等问题,不一一列出图片了. 说明:     msvcp120d.dll ...

  5. libsybcomn64.dll php,libsybcomn.dll下载|

    libsybcomn.dll是一款重要的dll文件.当你发现电脑出现类似找不到libsybcomn.dll.libsybcomn.dll文件错误或libsybcomn.dll丢失等类似提示.就来下载我 ...

  6. VC程序编译成exe后需msvcr100.dll、msvcp100.dll才能运行的解决方法

    问题: vVC程序编译成exe运行提示缺少msvcr100.dll.msvcp100.dll文件. 要点: 1.将编译模式设置为 Release 模式,选择对应的Win平台32位或64位: 2.设置设 ...

  7. VC++6 开发MFC扩展DLL以及MFC DLL可以包含界面

    VC环境可以开发win32 DLL和MFC DLL:下面来开发一个MFC DLL:Win7, VC6: 新建一个MFC exe工程:名为mfcddd:在同级目录下新建一个文件夹,名为mfcbin: 默 ...

  8. 转 ajax.dll 与 ajaxpro.dll的用法

    转 ajax.dll 与 ajaxpro.dll的用法 文章分类:.net编程 ASP.NET AjaxPro的应用 1.首先下载AjaxPro组件.并将AjaxPro.dll引用到网站(或项目). ...

  9. 无法启动此程序,因为计算机中丢失msvcrtd.dll,Win7打开剑灵提示“丢失d3dx10_43.dll、MSVCRTD.dll文件”怎么办?...

    Win7打开剑灵提示"丢失d3dx10_43.dll.MSVCRTD.dll文件"怎么办?剑灵是一款大型的动作类游戏,最近一位Win7用户在运行剑灵游戏时,系统提示"计算 ...

最新文章

  1. TensorRT PoolingLayer
  2. 一份完整的聚合支付中心设计方案!
  3. 引入Redis|tensorflow实现 聊天AI--PigPig养成记(3)
  4. 咖啡,一种心情的境界
  5. Machine Learning机器学习公开课汇总
  6. Keepalived工作原理
  7. 如何取消Angular rxjs Observable的订阅
  8. python基础===利用unittest进行测试用例执行的几种方式
  9. Mac新手使用技巧——设置Finder(访达)快捷键
  10. windows server 2012无法安装NET.framework3.5解决方法
  11. Atitit 项目wechat微信截屏生成vcf通讯录384 个 384个人 42个节拍,平均每个8个人 技术点 im图像裁剪, ocr Tesseract Vcf格式 /wechatTel
  12. 学习总结 java 父子级
  13. Go 爱好者福利,《Go 语言编程之旅》正式开源!
  14. ps盖印图层在哪里_ps盖印图层快捷键怎么用? ps盖印图层教程
  15. 2-10配置Linux网络
  16. 常见实用网站集合(行业研究/政策研究/学习/办公/设计/编程)
  17. C语言程序设计A重点,【艾学笔记】复习重点之C语言程序设计
  18. jquery服务器文件保存到本地,jQuery本地存储
  19. SAP中采购订单中的汇率是如何确定的
  20. Pico4VR一体机游戏资源下载安装教程,Pico4无线串流PCVR游戏教程pico4串流游戏下载

热门文章

  1. tableau无法建立连接_Tableau入门(一):数据连接
  2. SQL语言---数据的查询
  3. php rtx,Ubuntu 手记之RTX (腾讯通)
  4. 上海市计算机等级考试一级试题,2010上海市高校计算机等级考试(一级)试题
  5. java security用法_Java加密体系(一)java.security包
  6. 【笑话】公交车上的艳遇
  7. mysql数据库系统原理_数据库系统原理及MySQL应用教程
  8. 数据结构题集(c语言版)第1章:绪论
  9. 高数一上集合与映射思维导图,继续冲冲冲
  10. fast角点与ShiTomas角点速度对比