Windows右键固定栏的应用程序时,会出现最近使用的项目,便于用户快速访问。这是Windows自动保存的信息,在电子取证时,可以作为相关的证据支撑。
JumpList文件符合一种OLE-CF结构,即Object Linking and Embedding(OLE) Compound File(CF)。Windows中很多文件都符合这种结构,例如ppt,word,excel。
前512字节是文件头,文件头记录一些基本信息。
| 偏移量 | 大小 | 描述 |
|---|---|---|
0 |
8 |
文件幻术,通常为\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1 |
8 |
16 |
Class identifier (GUID),一般全部为0 |
24 |
2 |
子版本号 |
26 |
2 |
主版本号 |
28 |
2 |
字节序,\xff\xfe大端;\xfe\xff小端 |
30 |
2 |
扇区(sector)大小 |
32 |
2 |
小扇区(mimi-sector)大小 |
34 |
2 |
Reserved保留字段 |
36 |
4 |
Reserved保留字段 |
40 |
4 |
Reserved保留字段 |
44 |
4 |
用于SAT的扇区数量 |
48 |
4 |
目录的起始扇区号(SID) |
52 |
4 |
Reserved保留字段 |
56 |
4 |
标准流的大小(通常是4096) |
60 |
4 |
SSAT的起始扇区号(SID) |
64 |
4 |
用于SSAT的扇区数量 |
68 |
4 |
第一个MSAT的扇区号(SID) |
72 |
4 |
MSAT的扇区数量 |
76 |
109 * 4 |
MSAT表,包含了109个SID |
文件头占据512字节,之后每512字节便是一个sector,编号从0开始。这个编号也称为扇区标识符SID。
SID有一些特殊的值。
SID (Name) |
Meaning |
|---|---|
-1 Free SID |
空闲的sector |
-2 End |
SID链结束标记 |
-3 SAT SID |
此sector用于存放SAT |
-4 MSAT SID |
此sector用于存放MSAT |
根据SAT存储的SID,可以构建多条SAT链,这些流就存储在这些链中。从目录中能够找到DestList开始的位置,之后按照DestList的格式解析即可。
解析完SAT表之后,可以构建许多条SAT链,类似的,可以进一步构建SSAT链。文件头中给出了SSAT的起始扇区号,可以在SAT表找到起始偏移的位置,之后构建SSAT链即可。
最近访问的文件信息存储在DestLists目录下。在Windows10和Windows 7中,DestLists文件结构略有差异,代码以Windows 10/11为例。
按照Destlist结构解析,便能获取访问文件的绝对路径(ab path)和最近一次访问时间(LastAccessTime)等重要信息。
而其他目录对应DestList中的每一个项,这些目录存储的信息大部分都是LNK格式的文件,这些文件存储了文件的创建时间、修改时间,工作目录等信息,必要时,可以进一步解析这些目录。
同时,大部分的LNK文件大小都不会超过4096字节,因此这些目录中的数据基本都从Root Entry中获取!
程序运行结果见示意图。
OLE-CF结构
