1. 主扇区配置表,这里已经分析过来,这里的主扇区配置表就只有一个SID,就没必要其他的扇区来存放它的内容了,MSAT的前109个项存放在文件头中,如果MSAT有大于109个项的内容,系统才会分配其他扇区来存放多出来的项。
1. 看到了吗,这个就是42号扇区的内容,是不是和FAT表很像啊!SAT表项和FAT表项一样,从0号开始编号,我们以这里为例子说明;在FAT文件系统中,我们可以根据FAT表构造文件存储的簇链,复合文档中我们同样可以构造出流存储的扇区链。
0号表项 | 1号 | 2号 | 3号 | 4号 | 5号 | 6号 | 7号 |
01000000 | 02000000 | 03000000 | 04000000 | 05000000 | 06000000 | 07000000 | 08000000 |
是不是很熟悉,这个和FAT表一样,表项中存储的是下一个扇区的扇区号。和FAT表链一样的,如果扇区链结束了,也就是说那个流占用的扇区结束了,那么就在以FE FF FF FF最为结束标志。跟FAT文件系统完全一样。如果那个扇区没有使用那么就用FF FF FF FF标示出来,说明这个是个空闲扇区;
这个就是我们的短扇区配置表的内容了,短扇区配置表就相当于短流的FAT表,我们前面说过,短流存储在短扇区中,那么短流的存储情况就在短扇区配置表中记录。这里我们构造出我们实例中的短扇区扇区链;
0号表项 | 1号表项 |
01000000 | FEFFFFFF |
剩下的表项内容都是 FFFFFFFF 也就是处于空闲状态;
1. 接着分析复合文档的目录结构,看看和我们的FAT文件系统有哪些相似之处:
看到了吗 43号扇区就是一个目录结构,我们说过了,一个目录入口占用128个字节,这里我用银光笔画出来的部分就是一个目录流入口,这里看到右边的ROOT Entry就是说这个是个根目录入口,用红笔勾画出来的部分是目录流的名字占用64个字节。其他的64个字节的分析就不在这里说明了,有兴趣的朋友可以加我。因为如果复合文件的文件头被破坏了,我们在修复文件头时,需要目录流的起始扇区号,这里我们就可以通过搜索
52 00 6F 00 6F 00 74 00 等等ROOT ENTRY的16进制表示来找到目录流的起始扇区。
好了,就写到这里了,其他的就大家自己分析吧。