春节后的第一个东东,DirectDisk

来源:互联网 发布:幼儿园大班弄的美工 编辑:程序博客网 时间:2024/04/28 08:37

DirectDisk提供了一组磁盘读写接口,通过调用这组接口,可以绕过WINDOWS内核的文件系统驱动和磁盘驱动,读写到真实磁盘上的扇区内容。
  开发DirectDisk的目的是为了和我的FileLib库配合起来,这样通过FileLib和DirectDisk,就可以完全取代WINDOWS的文件系统驱动和磁盘驱动的功能,使你不经过这些驱动也可以读写物理磁盘上的文件,完成创建目录和删除文件等操作,此外DirectDisk也可以为我的VvolDisk虚拟磁盘提供内核层的磁盘读写功能,如果用户是拿一块物理磁盘区域做为虚拟磁盘,那么VvolDisk就可以不再走上层的文件系统和磁盘驱动来读写磁盘了,至少这样速度上可以提升很多。:)(VvolDisk是我的另一个产品,提供本地和网络虚拟磁盘功能,是为我的网络存储解决方案而开发的,我会在另一篇文章中说明)。

  正常的文件读写简要流程:
  1.用户调用Win32 API ReadFile,WriteFile进行文件读写(如 ReadFile("c:/txt"...))
  2.读写请求被下发到内核中的文件系统驱动(fastfat.sys,ntfs.sys等),文件系统驱动进行文件系统解析,然后向磁盘驱动发送磁盘读写请求
  3.磁盘驱动(Disk.sys)从真实物理设备中读入或者写入扇区数据

  通过FileLib+DirectDisk文件读写简要流程:
  1.用户调用FileLib提供的接口ReadFile,WriteFile进行文件读写(如 ReadFile("c:/txt"...))
  2.请求被发送到FileLib中,FileLib负责进行文件系统解析,然后向内核中的DirectDisk发送磁盘读写请求
  3.DirectDisk从真实物理设备中读入或者写入扇区数据
  (通过FileLib+DirectDisk读写文件是保证不会经过fastfat.sys,ntfs.sys,disk.sys这类驱动)

  正常的磁盘读写简要流程:
  1.用户调用Win32 API ReadFile,WriteFile进行磁盘读写(如 ReadFile("////.//PhysicalDrive0"...))
  2.读写请求被下发到内核中的文件系统驱动(fastfat.sys,ntfs.sys等),文件系统驱动转发这些请求到磁盘驱动中处理
  3.磁盘驱动(Disk.sys)从真实物理设备中读入或者写入扇区数据

  通过DirectDisk磁盘读写简要流程:
  1.用户调用DirectDisk提供的接口ReadDisk进行磁盘读写(如 ReadDisk(0),0对应PhysicalDrive0)
  2.读写请求被下发到内核中的DirectDisk驱动,DirectDisk负责从真实物理设备中读入或者写入扇区数据
  (通过DirectDisk读写文件是保证不会经过fastfat.sys,ntfs.sys,disk.sys这类驱动)


  本来我是打算将DirectDisk免费公开给所有开发人员使用的,不过经过好友的劝说,我暂时放弃了这样的想法。因为FileLib+DirectDisk组合起来的威力太强大了。试想一下,如果某个病毒通过该接口进行感染或者破坏,所有基于文件过滤和磁盘过滤的病毒监控都是没有办法监控到的。FileLib+DirectDisk,几乎可以破解目前任何文件过滤保护和磁盘过滤保护类的产品,会对世面上所有的还原卡,还原产品,目录加密,磁盘加密类产品造成危害。:(

  此外还有很多群里的朋友问题我DirectDisk的原理,不过现在暂时还不能公开,总之DirectDisk决不是通过内核直接磁盘I/O的方式读写磁盘的,那样的东东我几年前写过,通用性太差了,会和WINDOWS本身的磁盘驱动产生冲突,而且不能兼容其它的磁盘模式(比如AHCI模式),DirectDisk兼容性很强,不会和WINDOWS的磁盘读写冲突,而且兼容所有模式。 

原创粉丝点击