我正在寻找symstore用来创建目录名的散列算法。我找到了这个链接Microsoft Symbol Server / Local Cache Hash Algorithm,它描述了用于生成散列值的数据元素,但它没有详细介绍如何计算散列值。我很想看看symstore是如何生成散列目录的,如果有人有任何可以展示的示例代码,那就太好了!
发布于 2015-10-15 15:58:10
symstore.exe按如下方式计算散列目录名:
对于PDB文件,使用GUID +年龄。下面是一个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)以下是打印PDB和PE文件的symstore哈希值的python脚本示例:
发布于 2011-11-02 07:57:38
不知道您是否已经复习过this,但它是描述符号存储过程的美国专利。正如你可以想象的那样,它相当密集,但它确实详细地描述了符号存储目录是如何扩展和删除的(特别是在第6、7、8节中)。希望这篇文章能帮助你,或者给你指明正确的方向。
https://stackoverflow.com/questions/7965318
复制相似问题