yaoyingab
驱动牛犊
驱动牛犊
  • 注册日期2011-07-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2158回复:5

(已解决)求助:根据passthru修改的程序无法发tcp包

楼主#
更多 发布于:2011-12-19 10:25
我根据passthru修改的包过滤程序,主要是过滤发送的包。因此我另外创建一个系统线程,把要发送的包插入一个
队列中,然后系统线程就从队列里取报文,修改完报文就发送出去,开始一直好好地,就是用了一段时间后发现无法
上网了,但是我发现只是tcp包发布出去,udp包比如qq都是可以连接上的,即使把驱动卸载、网卡禁用再启用也无法解决
这种情况,只有重启电脑(虚拟机)才行。我感觉肯定是什么资源耗尽了,但是为什么udp报文却可以发出去呢?难道是
tcp的什么资源?请各位指教。




好好工作 好好生活~~
wayitech
驱动牛犊
驱动牛犊
  • 注册日期2006-08-25
  • 最后登录2018-01-24
  • 粉丝1
  • 关注1
  • 积分33分
  • 威望273点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2011-12-19 15:46
用sniffer看看封包
yaoyingab
驱动牛犊
驱动牛犊
  • 注册日期2011-07-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-12-20 10:50
已经用wireshark抓包看过了,发现在根本就发不出tcp报文,但是udp可以。然后我用一个发包工具xcap做了一个tcp的syn包,发现可以发出去,
抓包也抓到了,这说明很可能是上层的tcp资源耗尽了。之后我用flashfxp(ftp客户端)连接了一个ftp服务器,立马出现连接错误:bind 0.0.0.0
错误 :10055 无缓冲空间可用,请问这是什么原因?
好好工作 好好生活~~
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
地板#
发布于:2011-12-20 12:12
发送完,通知上层数据不再使用
走走看看开源好 Solaris vs Linux
yaoyingab
驱动牛犊
驱动牛犊
  • 注册日期2011-07-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2011-12-20 15:32
引用第3楼cyliu于2011-12-20 12:12发表的  :
发送完,通知上层数据不再使用

 我也怀疑是这个问题,我用poolmon查看发现,如果安装我的驱动的话,标签为TCPA的内存泄露很严重,如果
不安装我的驱动则没有这个问题。以前我是在passthru的MPSendpackets函数中直接加入一个修改报文的函数,
并没有发现这个问题,但是出于安全考虑,因此很多函数必须在passive level下才能运行,于是我便使用系统线程
来发送报文。于是我在MPSendpackets只完成把报文插入队列的操作,而发送报文全放在线程中进行,而我线程
中发送报文的代码就是从MPSendpackets中考过来的,应该没有什么问题。另外由于返回的都是PENDING,所以在
miniport层发送完数据后会钓鱼PtSendComplete函数通知上层释放资源,从打印信息可以看出都执行到了,但是为什么
还是会导致TCPsocket的缓冲区资源泄露呢?UDP则没有这个问题,qq都可以上的。
好好工作 好好生活~~
yaoyingab
驱动牛犊
驱动牛犊
  • 注册日期2011-07-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2011-12-20 17:49
最后定位到在函数NtDuplicateObject,在使用该函数得到目的句柄后,在返回时应该使用
zwclose(outhandle)把该句柄关掉。不然就导致标记为TCPA的内存不断泄露。
好好工作 好好生活~~
游客

返回顶部