Microsoft SymbolLocalCacheディレクトリに使用されているハッシュアルゴリズムを理解しようとしています。
たとえば、ローカルキャッシュは次のようになります。
L:\ Symbols
\browseui.dll
\ 44FBC679fe000
browsue.dll
\browseui.pdb
\ 44F402F62
ブラウズui.pdb
\ explorer.exe
\ 3EBF1F14f7000
explorer.exe
\ explorer.pdb
\ 3EBF1F141
explorer.pdb
\ msvcr71.pdb
\ 60D915C6AB6A4F3586E9096E2F8856482
msvcr71.pdb
ファイルとそのデバッグデータベースの間には、ある種の対応関係があるようです。それ以外では、これらの(おそらく)16進文字列フォルダーの名前がどのように生成されているのか理解できません。
それらのいくつかは9桁、いくつかは13桁、その他は33桁です。実際のライブファイル(何らかの理由でシンボルキャッシュに保存されている)には13桁のハッシュがあり、その(ほぼ同様の)デバッグデータベースには9桁のハッシュがあるように見えます。一部のデバッグデータベースは13桁のハッシュを取得します。対応するライブファイルはありませんが、これらが特別な理由を理解することはできません。
私が知っているあらゆる種類のハッシュアルゴリズム(そのうち39個)を使用してファイルをハッシュしようとしましたが、どのような方法でも一致しません(ストレート、リバース、オルタネートエンディアンなど)。
何か案は?
更新 私はついにそれを見つけたと思います。シンボルストレージフォーマットから:
SymStoreは、ファイルシステム自体をデータベースとして使用します。シンボルファイルのタイムスタンプ、署名、年齢、その他のデータなどに基づいたディレクトリ名を使用して、ディレクトリの大きなツリーを作成します。
Dangを編集 してください。残念ながら、ディレクトリ名はさまざまな側面から派生しているとだけ述べられていますが(私が推測するハッシュではありません)、正確な方法については述べていません。検索は続行されます…:-(