cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
阅读:1550回复:2

为何不能HOOK NdisIMRegisterLayeredMiniport 函数?

楼主#
更多 发布于:2005-03-06 17:29
我HOOK 了NdisIMRegisterLayeredMiniport 函数,但我的hook函数没有执行,为什么呢?

我想修改MINIPORT的QueryInformationHandler,现在有两种想法,一种是HOOK NdisIMRegisterLayeredMiniport函数,修改QueryInformationHandler.

另外一种是通过hook NdisRegisterProtocol函数 获得的_NDIS_OPEN_BLOCK指针遍历出MINIPORT的再修改QueryInformationHandler,单现只停留在理论上.

谁有好的办法修改MTU或者HOOK QueryInformationHandler呢?



[编辑 -  3/7/05 by  cyliu]
走走看看开源好 Solaris vs Linux
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-07 17:25
请确认一下你到底hook到了哪一个函数,用softice察看一下
函数地址。
[b]万水千山总是情,回个帖子行不行?[/b]
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
板凳#
发布于:2005-03-08 08:56
我确实HOOK 了NdisIMRegisterLayeredMiniport 函数。

下面是NODE回答:

(1)通过截获QueryInformationHandler来修改MTU肯定是可以的。但是要注意你那样截获的是中间层驱动的QueryInformationHandler函数,而非物理网卡的QueryInformationHandler函数。不过这样也应该可以。
  (2)只要在注册新的中间层驱动后,协议驱动和底层MINPORT驱动绑定的时候,才会调用NdisIMInitializeDeviceInstanceEx函数。至于你的NdisIMInitializeDeviceInstanceEx函数为什么不能运行,和你HOOK的方发、时机有关系,这个我就不得而知了。

而我是采用的是NDIS-HOOK驱动,因此可能出现在这里。

原理是否是这样:

根据驱动启动顺序应该是网卡驱动,NDIS-HOOK驱动,(中间层驱动,如果存在中间层驱动),tcpip.sys.那么我们就钩不到MINI有关的函数(网卡驱动),只能钩到PROT有关的函数(中间层驱动或者tcpip.sys调用)而tcpip.sys是不调用MINI有关的函数.

    因此,仅有NDIS-HOOK驱动条件下就不会HOOK到MINI函数了,而是PROT函数.

请指教!
走走看看开源好 Solaris vs Linux
游客

返回顶部