有没有对文件分区表及磁盘读写过程很了解的大侠啊,能进来看一下嘛???

西山小月 2009-01-12 08:47:25
我在做对u盘进行全盘加解密的程序,在驱动中,对所有的u盘扇区读写操作进行加解密。
可是现在发现一个问题,每次在u盘中新建文件,文件分区表的扇区都要被多加密一次,而其他扇区都是正常的,一次加密一次解密。这样导致的结果就是,u盘新建一个文件后,系统就不识别分区表了,就不认u盘了。不知这是什么原因?

分区表是每次u盘插入电脑时被系统获得,是不是保存在内存中了,而不是每次都从u盘获得?

如果是这样的话,怎样实现u盘的全盘加解密呢?
...全文
128 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jingzhongrong 2009-01-30
  • 打赏
  • 举报
回复
如果可以的话,跟踪一下确认看。如果不经过FAT表的话,那么获取两个FAT表的起始扇区和扇区数,在读写的时候判断扇区是否在FAT表中,如果是就跳过处理。
cadhy 2009-01-26
  • 打赏
  • 举报
回复

学习
西山小月 2009-01-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jingzhongrong 的回复:]
照描述看,lz是否每有文件读写操作就将整个u盘的扇区全部加密一次?
[/Quote]


是只加密有读写操作的扇区,但是文件分区表和文件分配表好像是保存在缓存里了,不是每次都经过过滤驱动,这样的话就出现问题了。
jingzhongrong 2009-01-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 slek 的回复:]
我是这样做的,过滤的irp是0x28和0x2a,但是出现了上述问题。
[/Quote]

0x28和0x2a具体是哪个IRP?

[Quote=引用楼主 slek 的帖子:]
我在做对u盘进行全盘加解密的程序,在驱动中,对所有的u盘扇区读写操作进行加解密。
可是现在发现一个问题,每次在u盘中新建文件,文件分区表的扇区都要被多加密一次,而其他扇区都是正常的,一次加密一次解密。这样导致的结果就是,u盘新建一个文件后,系统就不识别分区表了,就不认u盘了。不知这是什么原因?

分区表是每次u盘插入电脑时被系统获得,是不是保存在内存中了,而不是每次都从u盘获得?

如果是这样的话,怎样…
[/Quote]

照描述看,lz是否每有文件读写操作就将整个u盘的扇区全部加密一次?
cnzdgs 2009-01-23
  • 打赏
  • 举报
回复
我只知道分区表和文件分配表,不知道文件分区表为何物。


“地主”身份,20分有点拿不出手吧~
西山小月 2009-01-23
  • 打赏
  • 举报
回复
我是这样做的,过滤的irp是0x28和0x2a,但是出现了上述问题。
qdboyqf 2009-01-23
  • 打赏
  • 举报
回复
你可以在驱动中对读写进行加密,是读的IRP,驱动从U盘读出后解密,传给上层,是写的就加密写入U盘。
一条晚起的虫 2009-01-23
  • 打赏
  • 举报
回复
up
西山小月 2009-01-22
  • 打赏
  • 举报
回复
ding
qwertxp 2009-01-14
  • 打赏
  • 举报
回复
我是来YY的……
hemdacker 2009-01-13
  • 打赏
  • 举报
回复
jf
西山小月 2009-01-13
  • 打赏
  • 举报
回复
ding
转自看雪的CCDeath 【文章标题】: WinMount虚拟磁盘深入研究(-)之filedisk源代码详细分析 【下载地址】: 自己搜索下载 【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! -------------------------------------------------------------------------------- 【详细过程】 我的驱动入门三终结版,还再学习中。由于个人也有些事情要处理,研究起刘涛涛WinMount的虚拟 磁盘,而且这方面的书籍,貌似乎没见过,只有傻傻的几K代码存在,没注释什么的,整体框架也没说。 虚拟光驱用实现文件来模拟磁盘的原理,是文件系统驱动程序。 把filedisk驱动安装,查看install.txt文件。 1.Copy the driver (filedisk.sys) to %systemroot%\system32\drivers\. 2.Import filedisk.reg to the Registry. 3.Reboot. 4.Use the program filedisk.exe to mount/umount files, for an example of use see the file example.txt. 可以不用重起机子的方法,找一个动载加载驱动工具:DriverMonitor不错了。然后在“开始菜单”-> "运行"输入 "net start filedisk" 出现:“ 请求的服务已经启动”。这个必须得成功才行哦。 接下来注意点。cmd后 出现这个目录 C:\Documents and Settings \Administrator>,在接下来敲入 filedisk /mount 0 c:\temp\filedisk.img 8M f: C:\Documents and Settings \Administrator>filedisk /mount 0 c:\temp\filedisk.img 8M r: 回车一下。 出现"FileDisk:系统找不到指定路径" 。原因就出在这 "c:\temp\filedisk.img" 中的C:\temp要这个目录才行。至于 filedisk.img不是必须,会自动创建。 如果有出现"FileDisk:函数不正确" 中的“filedisk /mount 0 ”中"0"代号已经被使用。可以改为"1". 查看一下,结果就出现一个还未格式化 8M R磁盘,查看C:\temp下生成一个filedisk.img也8M。想卸载 掉"filedisk /umount r:". 还可以创建很大的虚拟磁盘,你把"8M"改换其他的就是了。 以上如果都没出现结果,基本上就没兴趣继续研究下去了,我看到了很多人初学filedisk都遇到以上这 些问题(包括我在内) ,把我折腾了半天。 先来分析驱动层代码,后来分析应用层代码。更详细的请看附件里的源代码。我对代码工程方式重新布 局,用起来更方便。 ===================================//先来分析驱动层代码 1.对filedisk.h进行分析 #define FILE_DEVICE_FILE_DISK 0x8000//用户定义范围0x8000~ #define IOCTL_FILE_DISK_OPEN_FILE CTL_CODE(FILE_DEVICE_FILE_DISK, 0x800, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_FILE_DISK_CLOSE_FILE CTL_CODE(FILE_DEVICE_FILE_DISK, 0x801, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) #define IOCTL_FILE_DISK_QUERY_FILE CTL_CODE(FILE_DEVICE_FILE_DISK, 0x802, METHOD_BUFFERED, FILE_READ_ACCESS) typedef struct _OPEN_FILE_INFORMATION { LARGE_INTEGER FileSize;//文件大小 BOOLEAN ReadOnly;//只读属性 USHORT Fil

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧