【问题标题】:How to validate a PE file's digital signature in windows and find who signed it? (using c/c++)如何在 Windows 中验证 PEM 文件数字签名并查找签名者? (使用 C/C++)
【发布时间】:2021-09-13 11:15:49
【问题描述】:

假设您有一个 Windows 可执行文件(驱动程序或用户模式应用程序),并且您想要:

  1. 验证数字签名是否正常且文件未损坏(与进入数字签名选项卡并显示证书正常时相同)

  2. 查找签署文件的公司。因此,我不是在谈论证书链的根(大多数情况下是 CA),我是在谈论链中的底层证书,即签署文件的公司,我想获得的名称那家公司。

我找到了两个 API,WinVerifyTrust 和 CertGetCertificateChain,但我不确定如何将它们用于此任务,或者它们是否可以帮助我。

假设您已经有了要检查的文件的句柄,并且已经在缓冲区中读取了它,那么之后您如何使用这些来检查证书?文档非常模糊。

【问题讨论】:

    标签: windows security winapi


    【解决方案1】:

    验证数字签名是否正常且文件没有损坏

    关于如何验证PE文件的签名的更多细节,我建议你可以参考例子:https://docs.microsoft.com/en-us/windows/win32/seccrypto/example-c-program--verifying-the-signature-of-a-pe-file

    查找签署文件的公司。

    我建议你可以尝试使用CryptQueryObject function (wincrypt.h)

    更多详情,我建议你可以参考文档:https://docs.microsoft.com/en-us/troubleshoot/windows/win32/get-information-authenticode-signed-executables

    你可以参考 Thread:Read and validate certificate from executable

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-01
      • 2015-08-14
      • 2015-10-18
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 2011-08-18
      相关资源
      最近更新 更多