swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:1297回复:3

哪位对hook技术比较熟,帮忙看看,3x!

楼主#
更多 发布于:2002-06-07 09:16
我用NdisRegisterProtocol注册了一个假Protocol从而得到了Protocol Chain的头,来得到TcpIp的发送和接收函数,所得函数有:Receive,ReceivePacket,Send,SendPackets,TransferData,TransferDataComplete,ReceiveComplete,SendComplete,...
但在接收数据包的时候出了问题,我在ReceivePacket里自己申请了一个包(从自己建的packet descripter pool),把原数据包copy到我的新数据包里,再把我的新的数据包调用原来的接收函数发送上去,原函数有两个返回值1,0,当返回1时,即接收失败或者resource(可能)就会出现死机情况,原来在ndis imd时有一个函数ReturnPacket可以处理这种情况,但用hook我没找到有ReturnPacket这个函数,请问哪位曾遇到过这个问题?请帮忙指点,3x!
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-07 12:20
我用NdisRegisterProtocol注册了一个假Protocol从而得到了Protocol Chain的头,来得到TcpIp的发送和接收函数,所得函数有:Receive,ReceivePacket,Send,SendPackets,TransferData,TransferDataComplete,ReceiveComplete,SendComplete,...
但在接收数据包的时候出了问题,我在ReceivePacket里自己申请了一个包(从自己建的packet descripter pool),把原数据包copy到我的新数据包里,再把我的新的数据包调用原来的接收函数发送上去,原函数有两个返回值1,0,当返回1时,即接收失败或者resource(可能)就会出现死机情况,原来在ndis imd时有一个函数ReturnPacket可以处理这种情况,但用hook我没找到有ReturnPacket这个函数,请问哪位曾遇到过这个问题?请帮忙指点,3x!

我不知道你创建新的数据包是否准确,但最后还是在RECEIVEPACKET时将原来的参数传给原来的接收函数。
我思故我在,脑袋不会坏.
gjpland
驱动小牛
驱动小牛
  • 注册日期2001-09-13
  • 最后登录2011-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-07 12:21
我用NdisRegisterProtocol注册了一个假Protocol从而得到了Protocol Chain的头,来得到TcpIp的发送和接收函数,所得函数有:Receive,ReceivePacket,Send,SendPackets,TransferData,TransferDataComplete,ReceiveComplete,SendComplete,...
但在接收数据包的时候出了问题,我在ReceivePacket里自己申请了一个包(从自己建的packet descripter pool),把原数据包copy到我的新数据包里,再把我的新的数据包调用原来的接收函数发送上去,原函数有两个返回值1,0,当返回1时,即接收失败或者resource(可能)就会出现死机情况,原来在ndis imd时有一个函数ReturnPacket可以处理这种情况,但用hook我没找到有ReturnPacket这个函数,请问哪位曾遇到过这个问题?请帮忙指点,3x!

我不知道你创建新的数据包是否准确,但最好还是在RECEIVEPACKET时将原来的参数传给原来的接收函数。
我思故我在,脑袋不会坏.
swift
驱动中牛
驱动中牛
  • 注册日期2001-07-26
  • 最后登录2007-05-09
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-06-07 13:02
原来的参数有ProtocolBindingContext,Packet,把这两个参数传给上层是没什么问题,由于我要对数据包作改动,所以要把改动后的数据包传给上层,现在我还只是把原包做copy,然后把copy后的数据包传给上层,我是用原来我hook前的函数传给上层的,它有两个返回值,当返回0的时候没什么问题,但返回1的时候,且有连续的几个都返回1时,才会有问题,我不知道是什么原因,在IMD里也有这样的问题,但是有相应的函数来处理,可是我在hook时并没有找到在IMD中的函数ReturnPacket!
哪位知道请指点!
游客

返回顶部