使用IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY需要什么样的签名?

问题描述 投票:0回答:3

我的一个玩具项目需要 PE 标头中的 IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 才能运行。我一直在通过测试签名来测试它,但如果我能负担得起,我正在考虑购买证书。

有关此的文档太旧了,所以我不确定该应用程序是否会使用用于内核模式签名的交叉签名证书或 Authenticode 代码签名证书进行签名。虽然后者便宜很多,但我还是买不起。

本文只讨论签名程序,不讨论证书要求。 这个建议使用Microsoft Azure Code Signing项目,但没有解释细节。 Stack Overflow 上的 Raxi 在这个问题中声称 Authenticode 签名就足够了,但我无法从参考文献中找到这一点。

那么 Authenticode 签名是否足以运行 IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 的可执行文件?

感谢任何了解此事并愿意提供帮助的人。

windows code-signing code-signing-certificate authenticode windows-security
3个回答
0
投票

正如微软自己的文档所说:

Microsoft 针对使用

/INTEGRITYCHECK
链接的 DLL 和可执行文件提供了新的签名指南。该指南用于推荐来自交叉签名程序的交叉签名证书。然而,交叉签名程序现已被弃用。您现在必须使用 Microsoft
Azure Code Signing
程序来签署您的 /INTEGRITYCHECK 文件。


-1
投票

我有一个 Authenticode 证书,并且可以确认它不足以成功加载具有该标志的 PE 文件。理论上,如果我的 Authenticode 证书的根 CA 存在交叉签名链,我就可以做到,但只有驱动程序签名证书具有 Microsoft 交叉签名的根 CA。

您需要内核模式驱动程序证书(即使您实际上没有制作驱动程序)来签署可执行文件。

据说,一旦 Azure 代码签名公开可用(无论多久),您将能够(免费)以该标志起作用的方式签署文件。


-1
投票

您可以使用旧的过时内核签名证书进行交叉签名,如果您有的话...... (需要向后移动你的电脑时钟) 不需要时间戳,并且通常操作系统不会检查证书是否已过时......(至少对于内核驱动程序而言不是)

© www.soinside.com 2019 - 2024. All rights reserved.