阅读:1651回复:3
对protocol wrapper机制的一些疑问?
读完斑竹的“网络数据报拦截通用技术”后,有以下几点不明白:请各位大虾不吝赐教:
1.我想使用注册假协议的方法通过网卡收发数据包,但是我的程序并不需要起到拦截的作用,所以我想问:只调用registerprotocol()和openadapter(),也就是在注册协议和绑定到指定网卡后,不使用hook其他协议的函数,能否使ndis调用我自己的派遣函数?我现在观察到的是在绑定到网卡后(网卡名字是在注册表中搜的),ndis根本不调用我的ptrecive()等函数,我不知是为何?是否我还要在注册表中添加与协议有关的值? 2.在那篇文章中说,“当有网卡接收到数据时,ndis就会调用_ndis_open_block结构中的句柄,所以只要hook了所有的协议的这个结构的句柄就可实现拦截”。那哥哥协议在注册时向ndis提交的ndis_protocol_characteritics中的句柄是否就不必hook了?这两个结构的句柄是什么关系?是否是ndis先调用_ndis_open_block中的句柄,然后再调用ndis_protocol_characteritics中的句柄? 烦请各位答疑解惑! |
|
沙发#
发布于:2003-01-21 10:06
读完斑竹的“网络数据报拦截通用技术”后,有以下几点不明白:请各位大虾不吝赐教: 两者都需要勾挂的,但主要还是NDIS_OPEN_BLOCK里,ndis_protocol_characteritics,这个结构只是一张参考表当协议驱动程序打开一个设备时会从ndis_protocol_characteritics里的派发函数拷贝到NDIS_OPEN_BLOCK里。 |
|
|
板凳#
发布于:2003-01-21 15:11
谢谢斑竹,我要再好好思考以下,不过分已给出!
|
|
地板#
发布于:2004-08-15 10:51
为什么我HOOK了OPENBLOCK没有
HOOK协议链的一样能够正常工作呢? 测试了不只一个星期了 |
|
|