如何检索索引的源文件的可移植可执行二进制文件

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3195907
本指南介绍了如何使用索引的资源文件中检索二进制文件的可移植可执行 (PE) 二进制文件从源代码管理使用的信息存储在 PE 的配对的程序数据库 (PDB) 文件。由于索引的源文件具有 PDB 文件中嵌入其哈希值,这些哈希值可以用于在检索过程中验证源代码文件的真实性。

注意在以下步骤中,"abc.dll"表示疑问的 PE 文件。

第 1 步

使用 symchk 若要分配从符号服务器位置匹配的.pdb 文件。/Os选项用于获取 symchk 输出消息中的完整的符号路径。

例如, 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 针对-sf选项来查看单个源代码文件和其哈希值与已分配的.pdb 文件。哈希值可能是 MD5 或 SHA256。

第 2B 步

如果问题中的 PE 文件托管代码,请使用 pdb2xml 对分配的.pdb 文件以查看单个源代码文件和其哈希值。哈希值可能是 SHA1 或 SHA256。

第 3 步

使用 srctool 相对与-n选项,以显示单个源代码管理版本信息一起分配的.pdb 文件索引的源文件。

例如, 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 中获得相应的哈希值。如果哈希值不匹配,事情可能会出错生成 PDB PE/对的或在源代码管理系统中的过程。这可能需要进一步调查。如果哈希值匹配,则强烈表明检索单个索引的源文件被用于编译 PE/PDB 对。

属性

文章 ID:3195907 - 上次审阅时间:10/05/2016 23:41:00 - 修订版本: 1.0

  • kbmt KB3195907 KbMtzh
反馈