阅读:1297回复:3
哪位对hook技术比较熟,帮忙看看,3x!
我用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! |
|
沙发#
发布于:2002-06-07 12:20
我用NdisRegisterProtocol注册了一个假Protocol从而得到了Protocol Chain的头,来得到TcpIp的发送和接收函数,所得函数有:Receive,ReceivePacket,Send,SendPackets,TransferData,TransferDataComplete,ReceiveComplete,SendComplete,... 我不知道你创建新的数据包是否准确,但最后还是在RECEIVEPACKET时将原来的参数传给原来的接收函数。 |
|
|
板凳#
发布于:2002-06-07 12:21
我用NdisRegisterProtocol注册了一个假Protocol从而得到了Protocol Chain的头,来得到TcpIp的发送和接收函数,所得函数有:Receive,ReceivePacket,Send,SendPackets,TransferData,TransferDataComplete,ReceiveComplete,SendComplete,... 我不知道你创建新的数据包是否准确,但最好还是在RECEIVEPACKET时将原来的参数传给原来的接收函数。 |
|
|
地板#
发布于:2002-06-07 13:02
原来的参数有ProtocolBindingContext,Packet,把这两个参数传给上层是没什么问题,由于我要对数据包作改动,所以要把改动后的数据包传给上层,现在我还只是把原包做copy,然后把copy后的数据包传给上层,我是用原来我hook前的函数传给上层的,它有两个返回值,当返回0的时候没什么问题,但返回1的时候,且有连续的几个都返回1时,才会有问题,我不知道是什么原因,在IMD里也有这样的问题,但是有相应的函数来处理,可是我在hook时并没有找到在IMD中的函数ReturnPacket!
哪位知道请指点! |
|