如何在我的驱动程序中验证PE的签名?

时间:2012-12-23 08:57:48

标签: c++ api kernel driver signature

我正在编写驱动程序,我需要检查其中的PE文件的签名。我知道如何在用户模式下执行此操作并且根据http://forum.sysinternals.com/topic19247.html [^]工作正常但是现在我需要在我的驱动程序中执行相同操作,我不能像在我的司机中“wintrust.h”,所以我一无所知。关于如何在内核模式下验证PE签名的任何建议?

谢谢

1 个答案:

答案 0 :(得分:0)

不幸的是,自我检查不会给你任何东西 - 篡改司机的那个也会删除支票。然而,对于教育需求,这是一项有趣但具有挑战性的任务。

您需要自己实现Authenticode验证。 Authenticode基于PKCS#7 / CMS和X.509证书。您需要在内核模式下重新实现所有这些功能。

虽然实现RSA很简单,但ASN.1解析器和PKCS7格式处理要复杂得多。您可能希望找到一些可以适用于内核模式的现有C代码。例如,您可以查看cryptlib。 Cryptlib支持CMS(这是你所需要的)并且是跨平台的,所以你不应该在内核模式上适应它时遇到问题。