我对数字签名有疑问。 据我所知,如果一个可执行文件或dll带有一些签名,当我右键单击该文件时,我将能够看到“数字签名”选项卡。
但是当我右键单击kernel32.dll
时,它没有显示此选项卡(“数字签名”),但我知道此文件是由Microsoft签名的。
这个dll(kernel32.dll
)有一些WinVerifyTrust
的引用,这些引用不存在于常规的数字签名exe或dll中。
有人可以解释一下系统dll的签名方式与常规dll的不同之处吗?什么是wintrust.dll
档?
我签下常规dll如下:
signtool sign /v /f MySPC.pfx mydll.dll
但我确信系统dll没有以这种方式签名。请帮我理解这一点。
答案 0 :(得分:2)
自:http://blog.didierstevens.com/2008/01/11/the-case-of-the-missing-digital-signatures-tab/
签署PE文件有两种不同的方法:向PE文件添加数字签名(嵌入式数字签名),或者将PE文件的散列添加到安全目录文件(文件类型.CAT)。
当PE文件具有嵌入式数字签名时,文件的“属性”对话框将托管“数字签名”选项卡。
但是,当通过安全目录文件签名文件时,不会显示“数字签名”选项卡。
关于wintrust.dll:它提供了API来验证对文件,签名或证书的信任。例如WinVerifyTrust API。