flyfox
驱动中牛
驱动中牛
  • 注册日期2001-04-05
  • 最后登录2012-08-03
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望22点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:3597回复:8

关于NDIS的协议层驱动程序和中间层驱动程序的一些看法

楼主#
更多 发布于:2001-04-07 09:41
我是一个软件开发人员,主要用VC开发比较上层的东西,但对底层非常爱好,喜欢汇编,SOFTICE,对98和NT的NDIS有一些研究,以下就粗略谈谈,不对之处请各位指正。
不知道大家对IPMAN和NTSNIFF及NT下的网络监视器熟悉么?它们都是一些应用程序,调用了底层的设备驱动程序,98下是VPACKET.VXD,可以直接调用,动态装载;NT下是SYS,必须安装,重新启动。这些设备驱动程序的源代码都在DDK下PACKET里,98下面的似乎有BUG,它编译后,生成的VXD比IPMAN调用的要小(为什么?我还没有研究过,希望那位大侠能够指点)。它们都是协议层驱动程序,也就是PROTOCTAL DRIVER,它编译的东西和TCPip.sys是一个层次的,如果底层的微端口驱动程序和网卡驱动程序收到数据,会通知它和TCPip.SYS来收,所以,你(ipman)能够收得到,系统安装的TCP/IP也能够收到,即数据流向是网卡(收到包)->网卡DRIVER->某些微端口驱动程序->????,它会到两个地方,如果你安装或动态装载了你的NDIS协议层驱动程序,一个就是到你的驱动程序,还有一个当然是系统的tcpip栈,即tcpip.sys,HAHA!!!所以你希望通过它来做包过滤,防火墙,显然不现实。那怎么才能够做包过滤呢?
除了重写TCP,98下有两种方式,一种是用VMM的Hook_Device_Service,天网似乎就是这样的,还有一种就是中间层驱动程序,(这两种我都没有试过),NT下(下面全都是NT的,我也仅在NT下开发过)许多软件防火墙都是采用这种,但它们需要NDIS4.0,什么是中间层驱动程序,就是在两层驱动程序中间插入一层,试想如果你写一个驱动程序,它在协议层驱动程序和微端口驱动程序之间,但它分别注册成协议层驱动程序和微端口,又分别绑定,那么,这个驱动程序就是一个混杂物,它对上面的协议层驱动程序(如tcp.sys和你自己写的)来说,是一个微端口驱动程序,对下面的来说,它又是一个协议层驱动程序,编译安装成功后,你在控制面板设置网络,在修改绑定,将NT系统的绑定顺序改成你的,那么就可以实现如下数据流向:网卡(收到包)->网卡DRIVER->某些微端口驱动程序->你的IMDRIVER(即中间层驱动程序)->tcp.sys,反向也仅此一条路,那么你在你的IMDRIVER中就可以加入包过滤了,你的NT防火墙也就有点眉目了!!
在NTDDK的帮助系统下面有较详细的阐述,你可以看看!
请各位指正!

最新喜欢:

pepetapepeta
一剑西来,天外飞仙
vanadies10
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分81分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-04-08 21:24
我要在NT下开发包过滤的程序,我在98下装了天网,可是它的监听功能好像不管用
vanadies10
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分81分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-04-09 08:01
它的ICMP过滤是有用的,不过TCP监听好像不行。
victroy
驱动牛犊
驱动牛犊
  • 注册日期2001-04-16
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-04-16 19:09
NDIS的中间层驱动程序怎样和应用程序通讯?请高手指教。
rascal
驱动牛犊
驱动牛犊
  • 注册日期2001-07-05
  • 最后登录2005-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-03 21:08
:它们都是一些应用程序,调用了底层的设备驱动程序,98下是
:VPACKET.VXD,可以直接调用,动态装载;
:"NT下是SYS,必须安装,重新启动。"

我现在光看程序,也生成了。SYS文件,可不知道安装SYS呢,请大侠赐教!!!
是我吗,不是吧!?
zzy918
驱动牛犊
驱动牛犊
  • 注册日期2001-04-26
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-10-13 18:59
我是新手,在DDK中描述的是Intermediate driver在Miniport driver和Transport driver 之间,而不是在Miniport driver和protocol driver 之间,不知对此该怎样理解?
.X.T.I.M.
驱动大牛
驱动大牛
  • 注册日期2001-09-22
  • 最后登录2021-08-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-10-13 20:01
哎~~~protocol和transport是同一层啊~~不过就是不同叫法罢了!一个是描述他的应用,一个是描述他的本质。不过我到想问问各位大虾,IM和MP能被WIN32直接调用么?好象ddk里的passthru和e100bex都没有讲怎么被WIN32直接调用。另外问什么软件能比较好的把反汇编出来的ASM变成C?
<IMG src="http://www.microsoft.com/traincert/images/logos/mcp.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcdba.gif" border=0><br> <IMG src="http://www.microsoft.com/traincert/images/logos/mcse.gif" border=0> <IMG src="http://www.microsoft.com/traincert/images/logos/mcsd.gif" border=0>
wangweibandit
驱动牛犊
驱动牛犊
  • 注册日期2007-04-09
  • 最后登录2008-01-14
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望25点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-04-17 15:58
说的不错啊
2301310021
驱动牛犊
驱动牛犊
  • 注册日期2007-05-02
  • 最后登录2007-06-04
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-07 01:37
总结的很好,最近都在干这个
很有启发
游客

返回顶部