我的一个玩具项目需要在PE头中运行IMAGE_DLLCHARACTERSTICS_FORCE_IINTEGRITY。我一直在测试签名,但如果我能负担得起的话,我正在考虑买一个证书。
这上面的文档太旧了,所以我不确定应用程序是用用于内核模式签名的交叉签名证书还是Authenticode代码签名证书签名。虽然后者便宜得多,但我仍然负担不起尝试。
本文只讨论签名过程,而不讨论证书要求。这篇文章建议使用Microsoft Azure代码签名项目,但不解释细节。在这个问题中,关于Stack Overflow的Raxi声称Authenticode签名就足够了,但我从参考文献中找不到这一点。
那么,Authenticode签名是否足以运行具有IMAGE_DLLCHARACTERSTICS_FORCE_INTEGRITY的可执行文件?
感谢所有知道这件事并愿意提供帮助的人。
我有一个Authenticode证书,可以确认它不足以成功加载带有该标志的PE文件。理论上,如果我的Authenticode证书的根CA有一个交叉签名链,我就能做到,但只有驱动程序签名证书有一个Microsoft交叉签名的根CA。
您需要一个内核模式驱动程序证书(即使您实际上并没有制作驱动程序(来签署可执行文件。
据推测,一旦Azure代码签名公开可用(无论谁知道多长时间(,您就可以(免费(以该标志有效的方式对文件进行签名。
如果有交叉签名的话,可以使用旧的过期内核签名证书。。。。(需要将电脑时钟向后移动(不需要时间戳,而且通常操作系统不会检查证书是否过期。。。(至少不适用于内核驱动程序(