首页
社区
课程
招聘
如何隐藏磁盘
发表于: 2009-11-11 16:33 7667

如何隐藏磁盘

2009-11-11 16:33
7667
当插入一个U盘的时候,我想把此U盘隐藏,同时虚拟出一个等大小的虚拟磁盘来操作
对这个磁盘操作就相当于操作U盘
试过用DefineDosDevice来做,可以隐藏。但有一个问题,当隐藏后再显示出来的时候,点击任务栏右下角“安全删除xxx”时有时候卸载成功,有时候失败,失败后磁盘的图标上出来一个红色的问号
用WinObj看了下
假如第一次插入的时候设备名在GLOABL??为\Device\Harddisk1\DP(1)0-0+7
当经过隐藏,再显示出来,此时设备名在Sessions\0\DosDevices\xxxx目录下,显示还是\Device\Harddisk1\DP(1)0-0+7
卸载U盘,再重新插入(这个时候卸载是成功的)
这时候设备名已经在GLOABL??下变成\Device\Harddisk1\DP(1)0-0+9了,而由于卸载U盘的时候没有删除Sessions \0\DosDevices\xxxx目录下的符号链接,导致第二次插入的时候,再去QueryDosDevice 得到的设备名为Sessions\0\DosDevices\xxxx目录下上一次没有删除的设备名\Device\Harddisk1 \DP(1)0-0+7。这时候隐藏磁盘由于设备名不一至而失败,卸载也失败。
可以看出原因基本是由于卸载U盘时没有删掉Sessions\0\DosDevices\xxxx目录下的符号链接导致的
不知道除了这个方法在驱动里面怎么做?
用IRPTrace观察也下没看出什么来
望指点

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
为什么需要这么做呢?
2009-11-11 16:48
0
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
因为U盘加密,并且U盘头部加入了认证信息。直接双击是打不开U盘的,通过应用层控制程序输入正确的密码后会以一个虚拟磁盘的形式出现。对虚拟磁盘的操作就相当于对U盘操作。
因为操作过程中并没有直接去操作U盘,为了使用户更方便,就直接把U盘隐藏掉。
但底层的操作,数据还是保存在U盘上的,只是让他在用户态不可见。
2009-11-11 16:57
0
雪    币: 367
活跃值: (20)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
理解了,那不需要绕弯子做什么虚拟磁盘,然后重定向数据什么的.
做一个USB磁盘过滤驱动,或许便可满足你的要求了.
2009-11-11 21:00
0
雪    币: 222
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我只是负责这个模块,这部分还要和其它的组合。
目前是按这种思路做的演示程序
明天去问问看其它方法行不
2009-11-11 21:41
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
如果是自己的硬件,  那自己实现U盘的驱动,不需要再虚拟一次
2009-11-12 10:51
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有问号是因为你没有刷新。刷新一下就没问题了。自己看文档,我以前遇到过这个问题。不过感觉不是很有必要。。。我是小菜鸟
2009-11-17 11:02
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不如用户直接操作你虚拟出来的磁盘,自己驱动写入U盘。还简单些。。。
2009-11-17 11:03
0
游客
登录 | 注册 方可回帖
返回
//