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, который печатает хеш-значения symstore для файлов PDB и PE:
https://gist.github.com/lennartblanco/9a70961a5aa66fe49df6