阅读:1735回复:7
NDIS HOOK VS. NDIS
我在本论坛置顶帖子中好像看到过这样的信息,说NDIS HOOK就像邪派武功,难练,用得不好会走火入魔,但是威力巨大。但是在别的地方又看到一篇文章带源码介绍说NDIS HOOK其实很简单,就是:
驱动中建立一个普通的设备,然后通过IOCTL_PF_SET_EXTENSION_POINTER操作将你的内核模式的过滤钩子挂接到系统默认的ip过滤驱动上,这样你就可以在自己的过滤钩子里面实现完整的基于包的各种分析和过滤的处理了。 而NDIS驱动开发需要考虑的细节比较多,反而比较难,到底哪种说法正确?请大家指点迷津,谢谢! |
|
|
沙发#
发布于:2005-04-07 01:13
非也,非也,此HOOK非彼HOOK也,
此HOOK是windows 2000里面的叫做Filter Hook的东西,炼了不会走火入魔,只是这个东西很多不足,你可以去了解一下, NDIS PE HOOK 和 NDIS Protocol HOOK才是要自攻(自宫)的,没有官方文档支持的,都是要自己摸索出来的东西,出了问题,很难解决, 楼主还是走正道吧,NDIS IMD |
|
|
板凳#
发布于:2005-04-07 08:21
多谢少侠指点,放分,俺初级水平还是不自宫了吧,哈哈
|
|
|
地板#
发布于:2005-04-08 11:20
更惨的是自宫后也未必能成功。 :D
|
|
|
地下室#
发布于:2005-04-08 11:21
对于IPFILTERDRIVER的HOOK,据说是可以修改数据包头,但不能修改数据本身,不知道是否是这样的?????
|
|
|
5楼#
发布于:2005-04-09 18:53
老大来访,深感荣幸,但这个俺也不知。:D 题外话: 传统的处理网络数据包的方式由于网卡驱动程序运行在内核空间,当网卡收到包以后,包会存放在内核空间内,由于上层应用运行在用户空间,无法直接访问内核空间,因此要通过系统调用往上层应用系统送,这时候会发生一次复制过程。同时这个过程常常还伴随着一次从抓包库到检测引擎的复制过程。如果对于一般应用来说,很少的操作来处理网络通信,这样的系统开销还可以忍受,但是对于入侵检测系统这样大量读取网络数据包的应用来说,这样的开销就很难忍受了。 “零拷贝”技术是指网卡驱动程序共享一段内存区域,当网卡抓到数据包以后直接写到共享内存,这样的一个处理过程减少了至少一次复制。同时减少了一次网卡驱动程序向用户空间复制网络数据包的系统调用。而一次系统调用的开销其实是相当大的,对于入侵检测系统来说由于要频繁地跟内核空间的网卡驱动程序打交道,因此按传统方法会造成大量的系统调用,从而导致系统的性能下降。但是采用了“零拷贝”技术后有效的避免了这一点。 关于这段论述,如果用NDIS的话,在技术上应该如何实现呢?只要求讲讲思路 |
|
|
6楼#
发布于:2005-04-14 14:16
对于IPFILTERDRIVER的HOOK,据说是可以修改数据包头,但不能修改数据本身,不知道是否是这样的????? 不清楚IPFILTERDRIVER,用这个做东西的好像比较少吧,不实用。 |
|
|
7楼#
发布于:2005-04-28 16:11
IP Filter Hook 好像是发送的时候可以得到全部包,接收的时候
只能够得到包头 或者是颠倒过来~~,不记得了 |
|
|