cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1777回复:3

gjp快进来。。关于NDIS HOOK(SENDCOMPLETE)的问题

楼主#
更多 发布于:2005-02-24 15:29
我HOOK了NDIS里的SENDCOMPLETE。。。很奇怪的是。。。。我只要进行包内容的查询并显示。。。。只是加了这一个部分就会BLUE SCREEN。。。(系统环境是w2k sp4)
代码如下

VOID PrintPacket(IN PNDIS_PACKET pPacket)
{
PUCHAR ptr;

PNDIS_BUFFER pCurrentBuffer;
UINT CurrentLength;
UINT nBufferCount, TotalPacketLength;

NdisQueryPacket(
(PNDIS_PACKET)pPacket,
(PUINT )NULL, // Physical Buffer Count
(PUINT )&nBufferCount, // Buffer Count
&pCurrentBuffer, // First Buffer
&TotalPacketLength // TotalPacketLength
);

if (nBufferCount==0)
{
return ;
}

NdisQueryBuffer(
pCurrentBuffer,
&ptr,
&CurrentLength
);

DbgPrint(\"(%u)ptr==%x-%x-%xn\",CurrentLength,ptr[0],ptr[1],ptr[2]);

}



VOID HookSendComplete(
IN HOOK_CONTEXT_STRUCT *pOurContext,
IN NDIS_HANDLE ProtocolBindingContext,
IN PNDIS_PACKET Packet,
IN NDIS_STATUS Status
)
{

// __asm int 3;
PNDIS_BUFFER OldBuffer;
NDIS_STRING m_apn;
DbgPrint(\"HookSendComplete1n\");
  PrintPacket(Packet);//关键就是这里。。。有时候兰。有时候不兰。。。就算这个printpacket函数不兰。。。在最后面RETURN后也会蓝。。。


NdisQueryAdapterInstanceName(&m_apn,pOurContext->m_pBindAdaptHandle);
DbgPrint(\"SendCompletePacket(Name)...%wsn\",m_apn.Buffer);



if( pOurContext )
{

//DbgPrint(\"HookSendCompleten\");
((SEND_COMPLETE_HANDLER)pOurContext->m_pOriginalProc)(
ProtocolBindingContext,
Packet,
Status
);
}
DbgPrint(\"HookSendComplete1.................Completen\");
return;
}



很奇怪以前好象没有出现这样的问题。。。。。。

所以想请问下各位是怎么回事?
gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-02 11:59
我这儿也出现问题,

我Hook了 ProtocolSendComplete 以后,
一发送数据包就直接蓝屏了。

我在Softice 看堆栈,发现还在

ProtocolSend的处理中。

我的 ProtocolSendComplete 还没得到调用
gx_kyw
驱动牛犊
驱动牛犊
  • 注册日期2003-01-23
  • 最后登录2011-04-13
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望7点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-03 09:05
我的问题解决了:P

会不会是因为你这个 Packet 已经被释放了??



DbgPrint(\"(%u)ptr==%x-%x-%xn\",CurrentLength,ptr[0],ptr[1],ptr[2]);
这句话不加会不会蓝屏?





cyf_rich
驱动牛犊
驱动牛犊
  • 注册日期2002-03-14
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-16 08:41
我的问题解决了:P

会不会是因为你这个 Packet 已经被释放了??



DbgPrint(\"(%u)ptr==%x-%x-%xn\",CurrentLength,ptr[0],ptr[1],ptr[2]);
这句话不加会不会蓝屏?





 


不是啊。。。。不加那句也会蓝屏。。。很郁闷啊。。。。。反正只要访问那个包的内容就会蓝屏。。好象提前释放了一样。。但是我并没有提前释放啊。。。你的QQ和EMAIL是多少啊。。可以就这个问题聊聊啊。。。。对了。。能让我看看你的代码吗???

我的EMAIL地址是cyf_mail2@163.com
QQ号码是355205

[编辑 -  4/16/05 by  cyf_rich]
游客

返回顶部