michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:1735回复:7

NDIS HOOK VS. NDIS

楼主#
更多 发布于:2005-04-06 21:11
我在本论坛置顶帖子中好像看到过这样的信息,说NDIS HOOK就像邪派武功,难练,用得不好会走火入魔,但是威力巨大。但是在别的地方又看到一篇文章带源码介绍说NDIS HOOK其实很简单,就是:

驱动中建立一个普通的设备,然后通过IOCTL_PF_SET_EXTENSION_POINTER操作将你的内核模式的过滤钩子挂接到系统默认的ip过滤驱动上,这样你就可以在自己的过滤钩子里面实现完整的基于包的各种分析和过滤的处理了。

而NDIS驱动开发需要考虑的细节比较多,反而比较难,到底哪种说法正确?请大家指点迷津,谢谢!
我思故我在
IoriKingdom
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2010-04-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望23点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-04-07 01:13
非也,非也,此HOOK非彼HOOK也,
此HOOK是windows 2000里面的叫做Filter Hook的东西,炼了不会走火入魔,只是这个东西很多不足,你可以去了解一下,
NDIS PE HOOK 和 NDIS Protocol HOOK才是要自攻(自宫)的,没有官方文档支持的,都是要自己摸索出来的东西,出了问题,很难解决,
楼主还是走正道吧,NDIS IMD
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-07 08:21
多谢少侠指点,放分,俺初级水平还是不自宫了吧,哈哈
我思故我在
paladinii
驱动中牛
驱动中牛
  • 注册日期2003-10-28
  • 最后登录2012-03-09
  • 粉丝0
  • 关注0
  • 积分282分
  • 威望74点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-08 11:20
更惨的是自宫后也未必能成功。 :D
Ideas for life!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2005-04-08 11:21
对于IPFILTERDRIVER的HOOK,据说是可以修改数据包头,但不能修改数据本身,不知道是否是这样的?????
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
michael4338
驱动小牛
驱动小牛
  • 注册日期2004-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分238分
  • 威望66点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-09 18:53

对于IPFILTERDRIVER的HOOK,据说是可以修改数据包头,但不能修改数据本身,不知道是否是这样的?????


老大来访,深感荣幸,但这个俺也不知。:D

题外话:

传统的处理网络数据包的方式由于网卡驱动程序运行在内核空间,当网卡收到包以后,包会存放在内核空间内,由于上层应用运行在用户空间,无法直接访问内核空间,因此要通过系统调用往上层应用系统送,这时候会发生一次复制过程。同时这个过程常常还伴随着一次从抓包库到检测引擎的复制过程。如果对于一般应用来说,很少的操作来处理网络通信,这样的系统开销还可以忍受,但是对于入侵检测系统这样大量读取网络数据包的应用来说,这样的开销就很难忍受了。
“零拷贝”技术是指网卡驱动程序共享一段内存区域,当网卡抓到数据包以后直接写到共享内存,这样的一个处理过程减少了至少一次复制。同时减少了一次网卡驱动程序向用户空间复制网络数据包的系统调用。而一次系统调用的开销其实是相当大的,对于入侵检测系统来说由于要频繁地跟内核空间的网卡驱动程序打交道,因此按传统方法会造成大量的系统调用,从而导致系统的性能下降。但是采用了“零拷贝”技术后有效的避免了这一点。

关于这段论述,如果用NDIS的话,在技术上应该如何实现呢?只要求讲讲思路
我思故我在
poweruser
驱动老牛
驱动老牛
  • 注册日期2003-02-26
  • 最后登录2008-07-18
  • 粉丝0
  • 关注0
  • 积分652分
  • 威望72点
  • 贡献值0点
  • 好评度64点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-04-14 14:16
对于IPFILTERDRIVER的HOOK,据说是可以修改数据包头,但不能修改数据本身,不知道是否是这样的?????


不清楚IPFILTERDRIVER,用这个做东西的好像比较少吧,不实用。
老虎不发威,你当我是Hello Kitty!
IoriKingdom
驱动小牛
驱动小牛
  • 注册日期2004-06-17
  • 最后登录2010-04-26
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望23点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-04-28 16:11
IP Filter Hook 好像是发送的时候可以得到全部包,接收的时候
只能够得到包头
或者是颠倒过来~~,不记得了
天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
游客

返回顶部