he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3277回复:11

拦截另一个驱动程序的DeviceIoControl ?

楼主#
更多 发布于:2003-03-21 12:26
怎样[拦截另一个驱动程序的DeviceIoControl]操作?

是这样的,举个例:
有一个现存的驱动程序A(可能是其它厂商提供的),
有一个调用驱动程序A的应用程序B(可能是其它厂商提供的),
我想自己再做一个驱动程序C来拦截B与A之间的DeviceIoControl操作,
使其应用程序B的DeviceIoControl命令先经过自己提供的过滤层驱动程序C过滤,然后再选择性地传递(或直接返回)到驱动程序A继续执行,实现B-C-A的命令传递,

通实现吗?大概怎么做?请高人指点(9X,2K,NT均可)

最新喜欢:

vanavana
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
glqgglq
驱动小牛
驱动小牛
  • 注册日期2001-04-16
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望4点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-21 12:50
关注中
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-21 13:03
就用filter.写个A的filter,是upper filter.前提这个A driver 不是filter Driver,我想是可以的。


不过看你的驱动类型,有的是行,有的是不行,去看一下walter oney的filter那章节.不过好像filter不能拦filter.
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-21 13:10
驱动程序间互相调用服务都能被拦截到,如9X下可用Hook_Device_Service,我想Ring3与Ring0间的DeviceIoControl也能被HOOK到吧?但不知如何...
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-21 14:07
都快急死了
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-21 18:56
什么?????????????????????


9X平台??????????????


我说的是2K以上平台。
51job51job
驱动牛犊
驱动牛犊
  • 注册日期2003-03-14
  • 最后登录2003-04-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-22 00:51
关注ing
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-03-24 08:52
如果是2000/NT平台的,怎么作?请指点
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-03-24 12:15
我想到了一个在Win9X下基本可行但不通用的办法,就是将驱动程序A改名为A1,另自建一个驱动程序且命名为A,这样一来,应用程序B调用到的驱动程序A就是我们自建的驱动程序A,然后在自建的驱动程序A中的DeviceIoControl事件中过滤式地传递原本该A1接由的各种消息,即形成一种B-A-A1的模式,间接地实现原计划的B-C-A的模式。

Win9X下应该可行,不知NT/2000下可否用这种办法?

另注:这种方法只是一种权宜之计,最好是能找到标准的实现方法,请各位高手指点
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
phenix_xiaomei
驱动小牛
驱动小牛
  • 注册日期2002-03-08
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望57点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-03-24 16:21
其实98下的驱动也是分层处理的。Vendor-Supplied Drivers(VSD)可以理解成设备的Filter。至于具体的处理,看看98的DDK啦!
he_x_p
驱动小牛
驱动小牛
  • 注册日期2002-11-15
  • 最后登录2005-07-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-03-25 12:57
98下过滤OpenFile,ReadFile,...等API很容易实现,但好像没看到过滤DeviceIoControl的介绍
乘着梦的翅膀, 借助黎明时柔和的阳光, 化着一只自由自在的冲天鸟, 在有梦的地方潇洒地飞翔......
omo
omo
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-03-25 13:42
我想是可以的,就算A driver是个filter,但这个filter也有个control device object存在,你可以试一试,能否让一个filter attach to driver A的CDO。
钱就是驱动,驱动就是钱。
游客

返回顶部