Flag
|
Description
|
0x02
|
Indexed
|
0x40
|
Resident (always)
|
0x80
|
Non-Resident (allowed to be)
|
在MFT 文件的属性记录集
Type
|
Description
|
Name
|
0x10
|
$STANDARD_INFORMATION
|
0x30
|
$FILE_NAME
|
.
|
0x50
|
$SECURITY_DESCRIPTOR
|
0x80
|
$DATA
|
$MountMgrDatabase
|
0x90
|
$INDEX_ROOT
|
$I30
|
0xA0
|
$INDEX_ALLOCATION
|
$I30
|
0xB0
|
$BITMAP
|
$I30
|
MountMgrDatabase 数据流
仅当Reparse Points on the Volume.
Offset
|
Size
|
Description
|
0x00
|
4
|
Size of entry
|
0x04
|
4
|
Flags? (bitfield?)
|
0x08
|
2
|
Offset to UNC Path
|
0x0A
|
2
|
Size of UNC Path
|
0x0C
|
2
|
Offset to data
|
0x0E
|
2
|
Size of data
|
该文件记录了卷中所有逻辑簇的使用情况。文件中每个BIT表示一个逻辑簇。在每个字节中,逻辑簇号按从小到大的顺序排列,如:BIT0对应逻辑簇号A,则BIT1对应逻辑簇号A+1。
在MFT 文件的属性记录集
Type
|
Description
|
Name
|
0x10
|
$STANDARD_INFORMATION
|
|
0x30
|
$FILE_NAME
|
$Bitmap
|
0x80
|
$DATA
|
[Unnamed]
|
在MFT 文件的属性记录集
Type
|
Description
|
Name
|
0x10
|
$STANDARD_INFORMATION
|
|
0x30
|
$FILE_NAME
|
$Boot
|
0x50
|
$SECURITY_DESCRIPTOR
|
|
0x80
|
$DATA
|
[Unnamed]
|
未命名数据流格式
NTFS卷的第一个重要的数据区是BPB(BIOS Parameter Block),数据区位于卷中第一个个区域:$Boot文件的第一个扇区中。该扇区也叫做引导扇区。
引导扇区与BPB结构
名字
|
偏移
|
尺寸
|
描述
|
BS_jmpBoot
|
0
|
3
|
跳转到引导代码处。本域允许有以下两种格式:
jmpBoot[0]=0xEB,jmpBoot[1]=0x??,jmpBoot[2]=0x90
或
jmpBoot[0]=0xE9,jmpBoot[1]=0x??,jmpBoot[2]=0x??
0x??指这里可以是任意值,上述格式是跳转到代码的Intel x86无条件跳转指令,引导代码存放在卷中第一个扇区中BPB表的后面
|
BS_OEMName
|
3
|
8
|
“NTFS ”本域是判别卷是否为NTFS卷的必要条件,NTFS卷中此域必须设置为上述值
|
BPB_BytsPerSec
|
0x0b
|
2
|
每扇区字节数,该值仅可以从以下值中选取一个:512、1024、2048、1096。为了兼容以前的软件,建议使用512这个值
|
BPB_SecPerClus
|
0x0d
|
1
|
每个分配单元扇区数,大于0而且必须是2的整数次幂,本值可以是1,2,4,8,16,32,64,128。注意本值必须保证使每簇字节数(BPB_BytsPerSec * BPB_SecPerClus)小于4K。
|
BPB_RsvdSecCnt
|
0x0e
|
2
|
保留区域中保留的扇区数,0
|
BPB_NumFATs
|
0x10
|
1
|
FAT表的个数,本域是为了保持与FAT/FAT32的BPB兼容而保留,其值固定为0
|
BPB_RootEntCnt
|
0x11
|
2
|
为保持兼容性而保留,值固定为0
|
BPB_TotSec16
|
0x13
|
2
|
为保持兼容性而保留,值固定为0
|
BPB_Media
|
0x15
|
1
|
存储介质代码,对固定磁盘为0xF8,对于可移动介质,其值通常是0xF0,合法的值有0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF。
|
BPB_FATSz16
|
0x16
|
2
|
为保持兼容性而保留,值固定为0
|
BPB_SecPerTrk
|
0x18
|
2
|
Int 13H调用中的每磁道扇区,本值仅当存储介质按CHS方式寻址且能被Int 13H识别才有意义。
|
BPB_NumHeads
|
0x1a
|
2
|
Int 13H调用中的磁头数,其意义同前面的BPB_SecPerTrk。注意该值的基数是1。
|
BPB_HiddenSec
|
0x1c
|
4
|
隐藏扇区数,分区每一个扇区相对于分区表的偏移扇区数。
|
BPB_TotSec32
|
0x20
|
4
|
为保持兼容性而保留,值固定为0
|
BS_DrvNum
|
0x24
|
1
|
Int 13H调用的磁盘号参数。
|
BS_Reserved1
|
0x25
|
1
|
保留,值为0。
|
BS_Reserved2
|
0x26
|
2
|
保留,值80H。
|
BS_TotSec64
|
0x28
|
8
|
卷总扇区数。
|
BS_1stClusOfMFT
|
0x30
|
8
|
$MFT文件第一个簇的簇号
|
BS_1stClusOfMFTMirr
|
0x38
|
8
|
$MFTMirr文件第一个簇的簇号
|
BS_ClusPerFR
|
0x40
|
4
|
每个文件记录占用的簇数1
|
BS_ClusPerDR
|
0x48
|
4
|
每个目录记录点用的簇数1
|
BS_Serial
|
0x70
|
8
|
卷序列号
|
~
|
|
|
|
|
0x200
|
|
NT loader
|
注1:每个记录占用的簇数如果为正值则表示该记录占用的簇数;如果为负值则表明记录尺寸小于簇尺寸,此时计算记录尺寸的方法应该是:记录的尺寸=2^(~每文件记录占用簇数)。
比如:BS_ClusPerFR=0xF6(-10),此时记录的尺寸是 BytsPerRecord=2^(~0xf6)=2^10=1024
该文件记录了卷中的坏簇的信息。该文件是一个稀疏文件,只记录有坏簇的描述。该文件拥有两个数据属性,第一个数据属性无名且是空属性,第二个数据属性名为:“$Bad”,该属性记录了卷中的坏簇的VCN,该属性中的数据分配的空间是整个卷的尺寸,数据占用的实际空间也是卷的尺寸,已初始化数据尺寸为0。在属性的数据流描述中非稀疏的描述就是坏簇的VCN。
坏簇在$Bitmap文件中相应的位总是被标记为已使用。
在MFT 文件的属性记录集
Type
|
Description
|
Name
|
0x10
|
$STANDARD_INFORMATION
|
|
0x30
|
$FILE_NAME
|
$BadClus
|
0x80
|
$DATA
|
[Unnamed]
|
0x80
|
$DATA
|
$Bad
|
Type
|
Description
|
Name
|
0x10
|
$STANDARD_INFORMATION
|
|
0x30
|
$FILE_NAME
|
$Secure
|
0x80
|
$DATA
|
$SDS
|
0x90
|
$INDEX_ROOT
|
$SDH
|
0x90
|
$INDEX_ROOT
|
$SII
|
0xA0
|
$INDEX_ALLOCATION
|
$SDH
|
0xA0
|
$INDEX_ALLOCATION
|
$SII
|
0xB0
|
$BITMAP
|
$SDH
|
0xB0
|
$BITMAP
|
$SII
|
|