Syn*_*ech 11 hash symbol-server symstore
我试图弄清楚什么散列算法用于Microsoft符号本地缓存目录.
例如,本地缓存可以是如下所示
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将文件系统本身用作数据库.它创建了一个大型目录树,其目录名称基于符号文件时间戳,签名,年龄和其他数据.
编辑 Dang,不幸的是它只提到目录名是从各个方面派生的(我猜不是很好的哈希),但并没有提到具体如何.搜索继续...... :-(
此页面包含有关计算符号文件以及可执行文件/ DLL的ID的信息.
基本上,对于可执行文件和DLL,您可以从Griff链接到的页面中列出的PE头中提取时间戳和文件大小.但是,对于PDB文件,您将需要Windows调试工具中的DBH命令.只需将PDB文件加载到DBH中,然后使用INFO命令获取PdbSig/PdbSig70和PdbAge.巴姆!而已.
我刚刚为SYSTEM32文件夹中的PDB文件创建了相应的文件夹,出于某种原因,最后将它们移动到本地符号存储区.