我正在编写一个驱动程序,我需要检查其中的 PE 文件的签名。我知道如何在用户模式下执行此操作,并且根据 http://forum.sysinternals.com/topic19247.html[^] 可以正常工作,但现在我需要在我的驱动程序中执行相同操作,我不能使用像“wintrust.h”在我的驱动程序中,所以我一无所知。有关如何在内核模式下验证 PE 签名的任何建议?
谢谢
不幸的是,自我检查不会给你任何东西 - 篡改司机的人也会删除检查。然而,对于教育需求,这是一项有趣但具有挑战性的任务。
您需要自己实现 Authenticode 验证。Authenticode 基于 PKCS#7/CMS 和 X.509 证书。您需要在内核模式下重新实现所有这些东西。
虽然实现 RSA 很简单,但 ASN.1 解析器和 PKCS7 格式处理要复杂得多。您可能希望找到一些可适用于内核模式的现有 C 代码。例如,您可以检查cryptlib。Cryptlib 支持 CMS(这正是您所需要的)并且是高度跨平台的,因此您应该不会遇到将其调整为内核模式的问题。