【问题标题】:How a system dll(like kernel32.dll) is signed如何签署系统 dll(如 kernel32.dll)
【发布时间】:2014-08-08 11:42:34
【问题描述】:

我对数字签名有疑问。 我知道,如果一个可执行文件或 dll 带有一些签名,当我右键单击该文件时,我将能够看到“数字签名”选项卡。

但是当我右击kernel32.dll时,它并没有显示这个标签(“数字签名”),但我知道这个文件是由微软签名的。

此 dll(kernel32.dll) 有一些对 WinVerifyTrust 的引用,这些引用在常规数字签名的 exe 或 dll 中不存在。

有人能解释一下系统 dll 的签名与常规 dll 的不同之处吗?什么是wintrust.dll 文件?

我签署常规 dll 如下:

signtool sign /v /f  MySPC.pfx mydll.dll

但我确信系统 dll 不是以这种方式签名的。请帮助我理解这一点。

【问题讨论】:

    标签: windows


    【解决方案1】:

    发件人:http://blog.didierstevens.com/2008/01/11/the-case-of-the-missing-digital-signatures-tab/

    对 PE 文件进行签名有 2 种不同的方法:向 PE 文件添加数字签名(嵌入式数字签名)或将 PE 文件的哈希添加到安全目录文件(文件类型 .CAT)。

    当 PE 文件具有嵌入的数字签名时,文件的“属性”对话框会包含一个“数字签名”选项卡。

    但是当通过安全目录文件对文件进行签名时,不会显示“数字签名”选项卡。

    关于 wintrust.dll :它提供 API 来验证文件、签名或证书的信任。例如WinVerifyTrust API。

    【讨论】:

    • 非常感谢您解释这一点。我正在下载 WDK(Windows 驱动程序套件)以获取可签名工具,以便能够创建目录文件。让您知道结果。
    • 我终于可以制作自己的 dll 并在系统 dll 被烧写时对其进行签名。
    • 这些是步骤,C:\WinDDK\7600.16385.1\bin\x86\MakeCat.exe -v test.cdf -- 创建目录文件。此目录文件包含 test.dll 的哈希 signtool sign /v /f MySPC.pfx /t timestamp.verisign.com/scripts/timstamp.dll test.cat --签署目录文件。 signtool catdb /v /u test.cat --  将该目录文件添加到系统的cat文件数据库中。现在,您需要复制存在其他 dll(如 kernel32.dll)的 dll 文件并复制存在 kernel32.lib 的 lib。
    • 很高兴看到您的评论!谢谢
    猜你喜欢
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2014-04-26
    相关资源
    最近更新 更多