探索ntfs
【程序编程相关:[ASP.NET]实现在执行完服务端代码】 探索ntfs 【推荐阅读:结合XML的数据检索技术】 【扩展信息:[ASP.NET]一个实用的弹出窗口函数】 webcrazy(tsu00@263.net) ntfs是windows nt引入的新型文件系统,它具有许多新特性.本文旨在探索ntfs的底层结构,所叙述的也仅是文件在ntfs卷上的分布.ntfs中,卷中所有存放的数据均在一个叫$mft的文件中,叫主文件表(master file table).而$mft则由文件记录(file record)数组构成.file record的大小一般是固定的,通常情况下均为1kb,这个概念相当于linux中的inode.file record在$mft文件中物理上是连续的,且从0开始编号.$mft仅供file system本身组织.架构文件系统使用,这在ntfs中称为元数据(metadata).以下列出windows 2000 release出的ntfs的元数据文件(我将要给出的示例代码的部分输出结果). file record(inode) filename ------------------ -------- 0 $mft 1 $mftmirr 2 $logfile 3 $volume 4 $attrdef 5 . 6 $bitmap 7 $boot 8 $badclus 9 $secure 10 $upcase 11 $extend windows 2000中不能使用dir命令(甚至加上/ah参数)像普通文件一样列出这些元数据文件.实际上file system driver(ntfs.sys)维护了一个系统变量ntfsprotectsystemfiles用于隐藏这些元数据.默认情况下,这个变量被设为true,所以使用dir /ah将得不到任何文件.知道这个行为后使用i386kd修改ntfsprotectsystemfiles后即可以列出元数据文件: kd> x ntfs!ntfsprotect* fe213498 ntfs!ntfsprotectsystemfiles fe21349c ntfs!ntfsprotectsystemattributes kd> dd ntfs!ntfsprotectsystemfiles l 2 fe213498 00000001 00000001 kd> ed ntfs!ntfsprotectsystemfiles 0 kd> dd ntfs!ntfsprotectsystemfiles l 2 fe213498 00000000 00000001 kd> d:\>ver microsoft windows 2000 [version 5.00.2195] d:\>dir /ah $* 驱动器 d 中的卷是 w2kntfs 卷的序列号是 e831-9d04 d:\ 的目录 2000-04-27 19:31 36,000 $attrdef 2000-04-27 19:31 0 $badclus ... 下一页