hard disk第一sector为MBR(master boot recorder),里面的内容:一些exe code,标识符,一张最多有4个partition entry的partition table,结束标志0x55AA。mbr的作用负责br的装载。mbr在安装系统的时候建立(修改)。
分区表的entry。
每个entry16字节,里面的信息:是否active,starting CHS,ending CHS,relative sector,total sector.partition type.
FAT16,12使用CHS,最多支持1024个C,255H,63sector。所以最大空间:1024*255*63*512=8G
而FAT16最大支持:power(2,16)个簇,每个簇最大128S,每个S512字节。4G。
而在FAT32,NTFS使用relative sector,total sector。
mbr的exe code结合分区表可以找到相应的br,装载br,并将控制权转交。br的作用负责文件系统的参数读取,装载ntldr或io.sys,并转交控制权。
br中的内容:jmp机器码,一个8byte的字符窜,BPB(bios parameter block),EBPB,execode。
在FAT16中的布局:
block1 block2 block3..... blockn........blockm........
br FAT表1 FAT表2 FDT(File Directory Table)
br占一个block,FAT1,FAT2,然后是FDT,最后是一般文件(数据)。两张FAT表内容一样,表2是表1的备份。(这一策略在FAT32中被用来备份br)。FDT占32block,其内容是32byte的entry。所以在FAT16中的根目录最多存放512个文件。在使用长名时,所放的文件数目更少。
在FAT32中的布局:
block1...block6.... blocki..... blockn........blockm........
br 备份的br FAT表1 FAT表2 FDT(File Directory Table)
br占几个block(但看的时候好像就一个有内容),block6是br的备份。后面保留若干block。然后是FAT1,FAT2,然后是FDT,最后是一般文件(数据)。两张FAT表内容一样,表2是表1的备份。(这一策略在FAT32中被用来备份br)。对FDT没有限制。
FAT表中的内容(以FAT32为例):每个表的数据单元是一个指针,32bit,指向一个簇号。意思是:当前簇号的下一个簇号是该单元的数据。例:内容2 内容5 内容7 内容9 内容8
簇号1 簇号2 簇号3 簇号4 簇号5
簇号一的位置:FAT表的起始地址,簇号2 的位置,FAT起始地址后+1个数据大小。若干簇号具有特殊的意义,0不使用,0xffffffff表示结束(好像还有几个),即没有下一簇号。有一个表示坏簇。等等。
每个文件有一个簇链,通过在目录中找到其初始簇号,然后到FAT表找其后继簇号,从而构成簇链。每个簇号只能属于某一个文件的某个位置,所以FAT表中的除特殊簇号外的一般簇号可以不出现,或者只出现一次。
BPB中参数的介绍:sector的大小,root目录的簇号,FAT表的位置,FAT表的数目,boot的备份在哪里,FAT表的大小,隐藏的sector。隐藏sector的说明,由于物理sector和本分区的sector(逻辑)是不一样的,物理sector真实地存在,而逻辑分区是从某个物理sector开始地,在它前面地sector就称隐藏sector,用于计算逻辑sector在物理盘中地物理位置。
有了BPB就可以找寻文件了。
如何parse一个文件:C:/wpj/wpj.txt。
参考文献:MSDN上几篇文章:File System,Startup Disk。
使用的工具:EasyRecovry
未完.
分区表的entry。
每个entry16字节,里面的信息:是否active,starting CHS,ending CHS,relative sector,total sector.partition type.
FAT16,12使用CHS,最多支持1024个C,255H,63sector。所以最大空间:1024*255*63*512=8G
而FAT16最大支持:power(2,16)个簇,每个簇最大128S,每个S512字节。4G。
而在FAT32,NTFS使用relative sector,total sector。
mbr的exe code结合分区表可以找到相应的br,装载br,并将控制权转交。br的作用负责文件系统的参数读取,装载ntldr或io.sys,并转交控制权。
br中的内容:jmp机器码,一个8byte的字符窜,BPB(bios parameter block),EBPB,execode。
在FAT16中的布局:
block1 block2 block3..... blockn........blockm........
br FAT表1 FAT表2 FDT(File Directory Table)
br占一个block,FAT1,FAT2,然后是FDT,最后是一般文件(数据)。两张FAT表内容一样,表2是表1的备份。(这一策略在FAT32中被用来备份br)。FDT占32block,其内容是32byte的entry。所以在FAT16中的根目录最多存放512个文件。在使用长名时,所放的文件数目更少。
在FAT32中的布局:
block1...block6.... blocki..... blockn........blockm........
br 备份的br FAT表1 FAT表2 FDT(File Directory Table)
br占几个block(但看的时候好像就一个有内容),block6是br的备份。后面保留若干block。然后是FAT1,FAT2,然后是FDT,最后是一般文件(数据)。两张FAT表内容一样,表2是表1的备份。(这一策略在FAT32中被用来备份br)。对FDT没有限制。
FAT表中的内容(以FAT32为例):每个表的数据单元是一个指针,32bit,指向一个簇号。意思是:当前簇号的下一个簇号是该单元的数据。例:内容2 内容5 内容7 内容9 内容8
簇号1 簇号2 簇号3 簇号4 簇号5
簇号一的位置:FAT表的起始地址,簇号2 的位置,FAT起始地址后+1个数据大小。若干簇号具有特殊的意义,0不使用,0xffffffff表示结束(好像还有几个),即没有下一簇号。有一个表示坏簇。等等。
每个文件有一个簇链,通过在目录中找到其初始簇号,然后到FAT表找其后继簇号,从而构成簇链。每个簇号只能属于某一个文件的某个位置,所以FAT表中的除特殊簇号外的一般簇号可以不出现,或者只出现一次。
BPB中参数的介绍:sector的大小,root目录的簇号,FAT表的位置,FAT表的数目,boot的备份在哪里,FAT表的大小,隐藏的sector。隐藏sector的说明,由于物理sector和本分区的sector(逻辑)是不一样的,物理sector真实地存在,而逻辑分区是从某个物理sector开始地,在它前面地sector就称隐藏sector,用于计算逻辑sector在物理盘中地物理位置。
有了BPB就可以找寻文件了。
如何parse一个文件:C:/wpj/wpj.txt。
参考文献:MSDN上几篇文章:File System,Startup Disk。
使用的工具:EasyRecovry
未完.