首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >symstore如何计算目录哈希值

symstore如何计算目录哈希值
EN

Stack Overflow用户
提问于 2011-11-01 18:46:00
回答 2查看 2.1K关注 0票数 7

我正在寻找symstore用来创建目录名的散列算法。我找到了这个链接Microsoft Symbol Server / Local Cache Hash Algorithm,它描述了用于生成散列值的数据元素,但它没有详细介绍如何计算散列值。我很想看看symstore是如何生成散列目录的,如果有人有任何可以展示的示例代码,那就太好了!

EN

回答 2

Stack Overflow用户

发布于 2015-10-15 15:58:10

symstore.exe按如下方式计算散列目录名:

对于PDB文件,使用GUID +年龄。下面是一个python示例:

代码语言:javascript
复制
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示例:

代码语言:javascript
复制
pe = pefile.PE("some.exe")

symstore_hash = "%X%X" % (pe.FILE_HEADER.TimeDateStamp,
                          pe.OPTIONAL_HEADER.SizeOfImage)

以下是打印PDB和PE文件的symstore哈希值的python脚本示例:

https://gist.github.com/lennartblanco/9a70961a5aa66fe49df6

票数 10
EN

Stack Overflow用户

发布于 2011-11-02 07:57:38

不知道您是否已经复习过this,但它是描述符号存储过程的美国专利。正如你可以想象的那样,它相当密集,但它确实详细地描述了符号存储目录是如何扩展和删除的(特别是在第6、7、8节中)。希望这篇文章能帮助你,或者给你指明正确的方向。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7965318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档