Microsoft 기호 로컬 캐시 디렉터리에 대해 사용되는 해시 알고리즘을 파악하려고합니다.Microsoft 기호 서버/로컬 캐시 해시 알고리즘
예를 들어, 로컬 캐시는 파일과 디버그 데이터베이스 간의 일치의 어떤 종류가있는 것 같습니다 다음
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
같은 것을 할 수 있습니다. 그 외에도, 나는 (아마도) 16 진수 문자열 폴더의 이름이 어떻게 생성되는지 알 수 없다.
일부는 9 자리이고, 일부는 13 자리이며 나머지는 33 자리입니다. 실제 메모리 파일 (어떤 이유로 심볼 캐시에 저장 됨)은 13 자리의 해시를 가지며 (거의 비슷한) 디버그 데이터베이스는 9 자리의 해시를 얻습니다. 일부 디버그 데이터베이스는 13 자리 해시를가집니다. 해당 라이브 파일이 없더라도 이러한 파일을 특수하게 만드는 것이 무엇인지 파악할 수 없습니다.
내가 어떤 방식으로 (그 중 39)와 전혀 일치 알고 해시 알고리즘의 모든 종류의 파일을 해싱 시도했습니다
(똑바로은 대체 endian'd 등 반전) 어떤 아이디어?
업데이트 드디어 찾아 냈습니다. Symbol Storage Format에서 :
SymStore는 데이터베이스의 파일 시스템 자체를 사용합니다. 심볼 파일 타임 스탬프, 서명, 나이 및 기타 데이터를 기반으로하는 디렉토리 이름으로 디렉토리의 큰 트리를 만듭니다.
편집 젠장, 불행하게도 그것은 단지 디렉토리 이름을 다양한 측면 (제 생각 엔 꽤 해시)에서 유래하지만, 정확히 어떻게 말을하지 않는 것을 언급하고있다. 검색은 :-(... 계속
에서 해당 페이지를 "파일 수정"타임 스탬프와 "SizeOfImage"의 16 진수 문자열을 연결하여 생성됩니다. 아무 데나 복사본이 없습니까? – nothrow
Wayback Machine조차도 그 페이지를 가지고 있지 않습니다. 하지만 URL을 보면이 스레드의 사본 인 것 같습니다. [ "Resyncing PDB and EXE"] (https://groups.google.com/forum/#!searchin/microsoft.public.vc.debugger/ resyncing/microsoft.public.vc.debugger/xLVvCBIU6fI/0ErZ6YlXJDEJ) 또한 스레드 [ "미니 덤프 및 소스 인덱싱"] (https://groups.google.com/forum/#!msg/microsoft.public.windbg/UYKSHJRtsFg/3inc6qfs-esJ) –