15

我正在为安装程序 DLL 编写一个函数,以验证系统上已安装的 EXE 文件的 Authenticode 签名。

该功能需要:

A) 验证签名是否有效。
B) 验证签名者是我们的组织。

因为它在安装程序中,并且因为它需要在较旧的 Win2k 安装上运行,所以我不想依赖 CAPICOM.dll,因为它可能不在目标系统上。

WinVerifyTrust API 非常适合解决 (A)

我需要找到一种方法来将已知证书(或其中的属性)与签署相关 EXE 的证书进行比较。

4

2 回答 2

24

您应该使用CryptQueryObject

这篇知识库文章演示了如何使用:如何从 Authenticode 签名的可执行文件中获取信息

对于询问如何在没有 Windows-API 的情况下执行此操作的评论者,我不知道有任何库可以做到这一点,但格式记录在这里:Windows Authenticode Portable Executable Signature Format

于 2008-11-21T08:13:30.837 回答
0

如果签名有效,其证书链将包含您的证书。CertGetCertificateChain将获得该链。

于 2008-11-20T13:19:17.290 回答