我正在寻找 symstore 用于创建目录名称的哈希算法。我发现这个链接Microsoft Symbol Server / Local Cache Hash Algorithm描述了用于生成散列的数据元素,但它没有详细说明如何计算散列值。我很想看看 symstore 如何生成哈希目录,如果有人有任何可以展示的示例代码,那就太好了!
问问题
2191 次
2 回答
10
symstore.exe 计算哈希目录名称如下:
对于 PDB 文件,使用 GUID + Age。这是一个python示例:
pdb = pdbparse.parse("some.pdb")
pdb.STREAM_PDB.load()
guid = pdb.STREAM_PDB.GUID
guid_str = "%.8X%.4X%.4X%s" % (guid.Data1, guid.Data2, guid.Data3,
guid.Data4.encode("hex").upper())
symstore_hash = "%s%s" % (guid_str, pdb.STREAM_PDB.Age)
对于 PE (exe/dll) 文件,使用 TimeDateStamp(来自 IMAGE_FILE_HEADER)和 SizeOfImage(来自 IMAGE_OPTIONAL_HEADER)。这是一个python示例:
pe = pefile.PE("some.exe")
symstore_hash = "%X%X" % (pe.FILE_HEADER.TimeDateStamp,
pe.OPTIONAL_HEADER.SizeOfImage)
这是一个示例 python 脚本,它打印 PDB 和 PE 文件的 symstore 哈希值:
于 2015-10-15T07:58:09.677 回答
4
不确定您是否已经查看过此内容,但它是描述符号存储过程的美国专利。正如你可以想象的那样,它非常密集,但它确实非常详细地描述了符号存储目录是如何扩展和删除的(特别是在第 6、7、8 节中)。希望这对您有所帮助或指出正确的方向。
于 2011-11-01T23:57:38.417 回答