yyffei
驱动牛犊
驱动牛犊
  • 注册日期2005-01-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分610分
  • 威望82点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
阅读:1361回复:1

请教hook ndis 中数据如何接收的

楼主#
更多 发布于:2008-03-13 16:56
在注册协议中进行hook ReceiveHandler之后.My_Receive收到的数据包很少.偶尔收到一些端口139的数据.试着hook ReceiveCompleteHandler.但参数只有ProtocolBindingContext.
贴:注册假协议方法得到的receivecomplete为什么参数中没有packet(http://bbs.driverdevelop.com/read.php?tid-16915-keyword-ProtocolBindingContext.html)中
引用第4楼gjpland于2002-07-03 16:00发表的  :
步骤是这样的,
你应该有一个需释放的包队列
你先在ProtocolReceive里把申请的包和资源放到这个队列里去
当protocolreceivecomplete的时候释放。
因为你是使用ndis-hooking而不是常规的PASSTHRU
所以你不能像passthru里把这个队列放在adaptercontext里
建议解决法方法是
1,在每一次hook ndis_open_block时,做一个adaptercontext,然后把这个队列放进这个context里。
2.是做一个全局队列,然后根据ndis_open_block 来判断

btw为什么protocolreceivecomplete没有PACKET参数。
原因很简单因为,protocolreceivecomplete是在所有receive动作结束后被调用的,也就是所他的调用是在miniportreturnpacket之后,
这样的话调用receivecomplete时所有的包都已经都被释放了。所以不可能会给你PACKET参数了。
.......


有说接收包还有个ReceivePacketHandler.但是我注册该函数,根本编译不过.好像5.0中没有该函数.
请问我该怎么做.如何才能截获到网卡收到的数据包呢.
yyffei
驱动牛犊
驱动牛犊
  • 注册日期2005-01-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分610分
  • 威望82点
  • 贡献值0点
  • 好评度59点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-03-13 23:36
hook ndis 的资料甚少.结贴了事..
游客

返回顶部