2009-09-14 35 views
8

Tôi đang cố gắng tìm ra thuật toán băm được sử dụng cho thư mục Microsoft Symbol Local Cache.Thuật toán băm của Microsoft Symbol Server/Local Cache

Ví dụ, bộ nhớ cache địa phương có thể giống như sau

 
    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 

Dường như có một số loại tương ứng giữa một tập tin và cơ sở dữ liệu debug của nó. Ngoài ra, tôi không thể tìm ra tên của các thư mục chuỗi thập lục phân (có lẽ) này đang được tạo ra như thế nào.

Một số trong số đó có 9 chữ số, một số 13 chữ số và một số khác có 33 chữ số. Nó trông giống như một tập tin thực, sống (vì lý do nào đó được lưu trữ trong bộ nhớ đệm biểu tượng) có một số băm 13 chữ số trong khi cơ sở dữ liệu gỡ lỗi (gần tương tự) của nó nhận được băm 9 chữ số. Một số cơ sở dữ liệu gỡ lỗi nhận được mã băm 13 chữ số; không thể tìm ra điều gì làm cho chúng trở nên đặc biệt, mặc dù chúng không có tệp trực tiếp tương ứng.

Tôi đã thử băm các tập tin với tất cả các loại thuật toán băm mà tôi biết (39 trong số đó) và trận đấu không có trong bất kỳ cách nào (thẳng lên, đảo ngược, endian'd thay thế, vv)

Bất kỳ ý tưởng?

Cập nhật Tôi nghĩ rằng cuối cùng tôi đã tìm thấy nó. Từ Symbol Storage Format:

SymStore sử dụng hệ thống tệp làm cơ sở dữ liệu. Nó tạo ra một cây thư mục lớn, với tên thư mục dựa trên những thứ như tem thời gian biểu tượng, chữ ký, tuổi tác và các dữ liệu khác.

Sửa Đằng, tiếc là nó chỉ đề cập đến rằng tên thư mục có nguồn gốc từ các khía cạnh khác nhau (không hoàn toàn một hash tôi đoán), nhưng không nói chính xác như thế nào. Việc tìm kiếm vẫn tiếp tục ... :-(

Trả lời

4

This page có thông tin về tính ID cho biểu tượng tập tin cũng như thực thi/DLL.

Về cơ bản, để thực thi và DLL, bạn giải nén và timestamp filesize từ tiêu đề PE Tuy nhiên, đối với các tệp PDB, bạn sẽ cần lệnh DBH từ Công cụ gỡ lỗi của Windows, chỉ cần tải tệp PDB vào DBH và sử dụng lệnh INFO để có được PdbSig/PdbSig70PdbAge.Đó là vậy.


Tôi vừa tạo các thư mục thích hợp cho các tệp PDB mà tôi có trong thư mục SYSTEM32 của mình vì một số lý do và cuối cùng chuyển chúng đến cửa hàng ký hiệu cục bộ.

+0

trang đó không có tác dụng nữa. Bạn không có bản sao ở bất cứ đâu? – nothrow

+2

Ngay cả Máy Wayback cũng không còn trang đó nữa. Nhưng đánh giá từ URL, tôi đoán đó là bản sao của chủ đề này: ["Đồng bộ hóa PDB và EXE"] (https://groups.google.com/forum/#!searchin/microsoft.public.vc.debugger/ resyncing/microsoft.public.vc.debugger/xLVvCBIU6fI/0ErZ6YlXJDEJ), cũng đề cập đến chuỗi ["Minidumps và lập chỉ mục nguồn"] (https://groups.google.com/forum/#!msg/microsoft.public.windbg/UYKSHJRtsFg/3inc6qfs-esJ) –

2

Hãy thử nhìn vào trang này: Symbol Server Callback Function

+0

Điều đó chắc chắn sẽ hữu ích. Những ID đó dường như là những gì các chuỗi được tạo ra, tuy nhiên tôi vẫn phải tìm ra cách tính các ID đó. – Synetech

0

EXE/tên thư mục DLL được tạo ra bằng cách ghép chuỗi hex của "sửa đổi tập tin" thời gian-tem và "SizeOfImage" từ IMAGE_OPTIONAL_HEADER

Các vấn đề liên quan