Я пытаюсь выяснить, какой алгоритм хеширования используется для каталога Microsoft Symbol Local Cache.
Например, локальный кеш может выглядеть примерно так:
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 цифр; не могу понять, что делает их особенными, хотя у них нет соответствующего live-файла.
Я пытался хэшировать файлы с помощью всех известных мне хэш-алгоритмов (39 из них), и ни один из них никоим образом не совпадает (с прямым, обратным, альтернативным порядком байтов и т. Д.)
Есть идеи?
Обновление
Я думаю, что я наконец нашел это. От Формат хранения символов :
SymStore использует саму файловую систему в качестве базы данных. Он создает большое дерево каталогов с именами каталогов, основанными на таких вещах, как метки времени файла символов, подписи, возраст и другие данные.
Редактировать
Данг, к сожалению, он только упоминает, что имя каталога происходит от различных аспектов (я думаю, не совсем хеш), но не говорит, как именно. Поиски продолжаются…: - (