我正在尝试弄清楚Microsoft Symbol Local Cache目录使用的哈希算法。
例如,本地缓存可以是以下内容之一
L:\Symbols \browseui.dll \44FBC679fe000 browsue.dll \browseui.pdb \44F402F62 browseui.pdb \explorer.exe \3EBF1F14f7000 explorer.exe \explorer.pdb \3EBF1F141 explorer.pdb \msvcr71.pdb \60D915C6AB6A4F3586E9096E2F8856482 msvcr71.pdb
似乎存在文件和其调试数据库之间的某种对应关系。除此之外,我无法弄清楚这些(可能是)十六进制字符串文件夹的名称是如何生成的。
其中一些是9位数字,一些是13位数字,还有一些是33位数字。看起来实际的现场文件(由于某种原因存储在符号缓存中)具有13位哈希值,而其(几乎相似的)调试数据库则获得9位哈希值。一些调试数据库获得13位哈希值;无法弄清楚这些有什么特殊之处,尽管它们没有相应的现场文件。
我已尝试使用我所知道的所有哈希算法(39个)对文件进行哈希,并且没有任何匹配项(直接,反转,备用端序等)
有什么想法吗?
更新 我认为我终于找到了。从符号存储格式:
SymStore使用文件系统本身作为数据库。它创建一个大型的目录树,目录名称基于符号文件的时间戳、签名、年龄和其他数据。
编辑 可惜的是,它只提到目录名称是由各种方面派生而来(我猜不完全是哈希),但并没有说具体如何。搜索继续... :-(