如何擷取可攜式可執行的二進位檔的索引的原始程式檔

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:3195907
本文說明如何擷取索引的原始程式檔可移植執行檔 (PE) 二進位檔案從原始檔控制,藉由使用資訊儲存在 PE 的二進位檔案的配對程式資料庫 (PDB) 檔。因為索引的原始程式檔內嵌在 PDB 檔案中其雜湊值,這些雜湊值可以用於原始程式檔的授權驗證期間擷取。

附註在下列的步驟中,"abc.dll"代表在 PE 檔中有問題。

步驟 1

使用 symchk 若要配置配對的.pdb 檔,從符號伺服器位置。若要取得完整的符號路徑,symchk 的輸出訊息中使用/os選項。

例如, symchk /v abc.dll /s D:\symbol-path\dll /os命令傳回下列結果︰
[SYMCHK] Searching for symbols to abc.dll in path D:\symbol-path\dllDBGHELP: abc - private symbols & lines        D:\symbol-path\dll\abc.pdb[SYMCHK] SymType: SymPDB[SYMCHK] ModName: abc[SYMCHK] ImageName: abc.dll[SYMCHK] LoadedImage: abc.dll[SYMCHK] PDB: "D:\symbol-path\dll\abc.pdb"[SYMCHK] PDB7 Sig: {625880BA-C1D4-4673-BFA2-07F90AAD7EC4}[SYMCHK] Age: 1[SYMCHK] PDB Matched:  TRUESYMCHK: FAILED files = 0SYMCHK: PASSED + IGNORED files = 1
在輸出中,請注意完整的符號路徑是 D:\symbol-path\dll\abc.pdb。

步驟 2A

如果在 PE 檔中有問題的原生程式碼,請使用 cvdump 對配置的.pdb 檔,以及 [ -sf選項,以檢視個別的原始程式檔和其雜湊值。雜湊值可能是 MD5 或 SHA256。

步驟 2B

如果在管理所討論的 PE 檔案的程式碼,請使用 pdb2xml 對配置的.pdb 檔,以檢視個別的原始程式檔和其雜湊值。SHA1 或 SHA256,可能是雜湊值。

步驟 3

使用 srctool 對已配置的.pdb 檔,以及 [ -n選項,以顯示原始檔控制版本資訊,專業技術人員的編製索引的原始程式檔。

例如, srctool-n D:\symbol-path\dll\abc.pdb的命令列傳回下列結果︰

d:\publicint\sdk\inc\api_x.h <source control server URL> d:\publicint\sdk\inc\api_x.h#34d:\abc_dll\abc.c <source control server URL> d:\abc_dll\abc.c#1

步驟 4

您可以使用原始檔控制版本資訊,從步驟 3,擷取個別索引的原始程式檔。您可以將擷取的原始程式檔儲存到本機檔案系統目錄中。

步驟 5

在步驟 4 中擷取個別的索引原始程式檔的每個本機複本,使用 certutil 加上產生並顯示密碼編譯雜湊一段複本-hashfile用動詞命令。如果雜湊值相關聯的原始檔的步驟 2A 或 2B MD5、 SHA1 或 SHA256,因此使用certutil-hashfile <file_name>MD5</file_name>certutil-hashfile <file_name>SHA1</file_name>certutil-hashfile <file_name>SHA256</file_name>

步驟 6

在步驟 4 中擷取個別的索引原始程式檔的每個本機複本,請由 certutil 在步驟 5 中所產生的雜湊值符合在步驟 2A 或 2B 取得對應的雜湊值。如果雜湊值不相符,項目可能已經錯誤 PE/PDB 組或在 [原始檔控制系統中產生期間。這可能值得作進一步的調查。如果雜湊值相符,這強烈表示擷取個別的索引原始程式檔用來編譯 PE/PDB 組。

警告:本文為自動翻譯

內容

文章識別碼:3195907 - 最後檢閱時間:10/05/2016 23:41:00 - 修訂: 1.0

  • kbmt KB3195907 KbMtzh
意見反應