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
结构