对bus hound 的研究(USB过滤驱动)

来源:互联网 发布:窝牛装修 知乎 编辑:程序博客网 时间:2024/05/16 08:51

USB过滤驱动已经做了两个月了!!基本上快完工了!!所以现在想把在这个驱动 的开发经历记下来~~~同时也希望能够和大家分享一下,或者切磋~~.

一开始USB过滤驱动的基本框架是一个群友给的!!安装方法是在注册表的CLASS键下找到要过滤的类,{36FC9E60-C465-11CF-8056-444553540000}我要过滤的是USB类的设备.在LOWERFILTERS字符键里加上驱动程序的名字我的是"FILTER"   .这个步骤后就是INF文件了!!INF文件的作用就是让我的驱动服务在系统启动的时候就被加载

(这种安装是手动的,同时还可以用软件做,这样安装会更方便,我写的安装软件是模仿DDK里的一个例子DEVCON.我的大部分的代码是从它里面拷贝的)


[DestinationDirs]
DefaultDestDir=10,system32/drivers
FiltJectCopyFiles=11

[SourceDisksFiles]
filter.sys=1


[SourceDisksNames]
1=%INSTDISK%

;------------------------------------------------------------------------------
;  Windows 2000 Sections
;------------------------------------------------------------------------------

[DefaultInstall.nt]
CopyFiles=DriverCopyFiles


[DriverCopyFiles]
filter.sys,,,0x60  ; replace newer, suppress dialog


[DefaultInstall.nt.services]
AddService=filter,,FilterService

 

[DefaultUninstall.nt]
DelFiles=DriverCopyFiles

[DefaultUninstall.nt.services]
DelService = filter,0x200

 

[FilterService]
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%10%/system32/drivers/filter.sys


;------------------------------------------------------------------------------
;  String Definitions
;------------------------------------------------------------------------------

[Strings]
MFGNAME="Walter Oney Software"
INSTDISK="WDM Book Companion Disc"
DESCRIPTION="Sample Filter Driver"
RUNONCEKEYNAME="Software/Microsoft/Windows/CurrentVersion/RunOnce"

上面的步骤后驱动就可以工作了~~下面的工作就是在驱动里面过滤来自上层的各种USB请求,我的目的是过滤所有的U盘的通讯.所以我在ADDDEVICE例程里用IoGetDeviceProperty获得每一个设备的类型描述,如果是USB Mass Storage Device我就会对他的USB请求进行过滤.也可以直接向设备发送设备描述符请求.

还有其他功能性的代码就不用提了!!当然还有很多问题关键的地方我也记不的了~~~呵呵.

接下来我又遇到一个新问题~~~我的过滤驱动不能够过滤所有的USB设备!!因为我在注册表里挂的是USB类设备,所以例如:HID,图象设备,USB网卡设备.系统是 不会让我的过滤插入的.

怎么解决呢!我知道有一个USB设备调试经常用的一个总线活动监视软件BUS HOUND,他能够监视所有插在USB端口上的设备.我不会逆向分析,呵呵只有看书了,在网上又找不到方法~~(也许这个问题也讨论的人不多吧!)

看了几天书,找到答案了~~呵呵,答案就在老早就看过的一本介绍USB设备的书~~~

不写了~~~先吃饭

 

原创粉丝点击