阅读:1550回复:2
为何不能HOOK NdisIMRegisterLayeredMiniport 函数?
我HOOK 了NdisIMRegisterLayeredMiniport 函数,但我的hook函数没有执行,为什么呢?
我想修改MINIPORT的QueryInformationHandler,现在有两种想法,一种是HOOK NdisIMRegisterLayeredMiniport函数,修改QueryInformationHandler. 另外一种是通过hook NdisRegisterProtocol函数 获得的_NDIS_OPEN_BLOCK指针遍历出MINIPORT的再修改QueryInformationHandler,单现只停留在理论上. 谁有好的办法修改MTU或者HOOK QueryInformationHandler呢? [编辑 - 3/7/05 by cyliu] |
|
|
沙发#
发布于:2005-03-07 17:25
请确认一下你到底hook到了哪一个函数,用softice察看一下
函数地址。 |
|
|
板凳#
发布于: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函数. 请指教! |
|
|