我试图弄清楚 Microsoft 符号本地缓存目录使用什么散列算法。
例如,本地缓存可以如下所示
L:\符号 \browseui.dll \44FBC679fe000 浏览器.dll \browseui.pdb \44F402F62 浏览ui.pdb \explorer.exe \3EBF1F14f7000 资源管理器.exe \explorer.pdb \3EBF1F141 资源管理器.pdb \msvcr71.pdb \60D915C6AB6A4F3586E9096E2F8856482 msvcr71.pdb
文件与其调试数据库之间似乎存在某种对应关系。除此之外,我无法弄清楚这些(大概)十六进制字符串文件夹的名称是如何生成的。
其中一些是 9 位数字,一些是 13 位数字,还有一些是 33 位数字。它看起来像一个实际的活动文件(由于某种原因存储在符号缓存中)具有 13 位哈希,而其(几乎相似)调试数据库获得 9 位哈希。一些调试数据库得到一个 13 位的哈希值;无法弄清楚是什么让这些特别,尽管它们没有相应的实时文件。
我已经尝试使用我所知道的每种散列算法(其中 39 个)对文件进行散列,并且没有以任何方式匹配(直接向上、反向、交替 endian'd 等)
有任何想法吗?
更新 我想我终于找到了。从符号存储格式:
SymStore 使用文件系统本身作为数据库。它创建了一个大型目录树,目录名称基于符号文件时间戳、签名、年龄和其他数据等内容。
编辑 当,不幸的是它只提到目录名称是从各个方面派生的(我猜不是一个哈希),但没有确切说明如何。搜索仍在继续…… :-(