首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在windows中验证PE文件的数字签名并确定是谁签名的?(使用c/c++)

如何在windows中验证PE文件的数字签名并确定是谁签名的?(使用c/c++)
EN

Stack Overflow用户
提问于 2021-09-11 14:55:32
回答 1查看 548关注 0票数 0

假设您有一个windows可执行文件(驱动程序或用户模式应用程序),您希望:

  1. 验证数字签名是否正常且文件未损坏(与转到“数字签名”选项卡时显示证书没有损坏的情况相同)
  2. 找出是哪家公司签的文件。因此,我说的不是证书链的根(大多数情况下是CA ),而是链中的底层证书,它是签署文件的公司,我想知道该公司的名称。

我找到了两个API,WinVerifyTrust和CertGetCertificateChain,但是我不知道如何将它们用于这个任务,或者它们是否可以帮助我完成这个任务。

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

EN

回答 1

Stack Overflow用户

发布于 2021-09-13 03:15:49

验证数字签名是否正常且文件未损坏。

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

找出是哪家公司签的文件。

我建议你试着使用CryptQueryObject函数(wincrypt.h)

关于更多细节,我建议您可以参考Doc:https://learn.microsoft.com/en-us/troubleshoot/windows/win32/get-information-authenticode-signed-executables

您可以参考线程:从可执行文件读取和验证证书

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69144097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档