Excel 文件中的第一个512字节块(0x200),是Laola的初始块,从偏移0x00到0x1FF。我们先拿80字节出来学习一下。
0x00000h: D0 CF 11 E0 A1 B1 1A E1 00 00 00 00 00 00 00 00
0x00010h: 00 00 00 00 00 00 00 00 3E 00 03 00 FE FF 09 00
0x00020h: 06 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
0x00030h: 19 00 00 00 00 00 00 00 00 10 00 00 FE FF FF FF
0x00040h: 00 00 00 00 FE FF FF FF 00 00 00 00 18 00 00 00
偏移00开始是Laola标识,“D0 CF 11 E0 A1 B1 1A E1”,表示这是一个Laola文件系统。
偏移0x18是Word,可能是小版本号,
偏移0x1a是Word,可能是版本号,一般为3。
偏移0x 1e是Word,表示块的大小,固定为9,是2的幂次(2^9为512字节)
偏移0x 20表示小文件块的大小,2^6为64字节。
好,作了一个简单的示例,我们再讲讲一些Laola中的概念。
1、初始块
就是Excel 文件中的前512个字节。这个块中数据结构的定义表我们放在本章末尾列出,在本章的各个部分我们将逐步分析这个初始块的含义。
2、大文件块文件表
大文件块文件表是存放文件块索引号的, 比如,
0x0003200: 01 00 00 00 02 00 00 00 03 00 00 00 05 00 00 00
0x0003210: FE FF FF FF 06 00 00 00 07 00 00 00 FE FF FF FF
0x0003220: 09 00 00 00 0A 00 00 00 0B 00 00 00 0C 00 00 00
0x0003230: 0D 00 00 00 0E 00 00 00 0F 00 00 00 FE FF FF FF
0x0003240: 11 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00
0x0003250: 15 00 00 00 16 00 00 00 17 00 00 00 FE FF FF FF
0x0003260: FD FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
索引号从0开始编号,一个DWORD表示一个索引。
索引的取值范围:
0xFFFFFFFD:特别块
0xFFFFFFFE:索引链结束标志
0xFFFFFFFF:未使用
0… 文件块总数:索引链中的下一个元素
大文件块文件表中是按索引链的方式排列的,通过索引链我们可以将在Excel文件中若干个不连续排放的大文件块,组织起来。
比如,我们先建立一个空的大文件块列表“{}”,我们从偏移0x0003200 + 0*4 (0为索引)中取DWORD,值为1,所以把0和1放入大文件块列表中,为{0, 1};偏移0x0003200 + 1*4处数值为2,所以把2放入列表中,为{0, 1 , 2};再到偏移0x0003200 + 2*4处取数值,为3,如此往复,一直到偏移0x0003200 + 7*4,数值为0xFFFFFFFE,表示索引链结束,而大文件块列表已经为{0, 1, 2, 3, 5, 6, 7}。这样,我们就已经取得了一个应该连续排放的若干个大文件块