2012-12-23 59 views
0

我正在寫驅動程序,我需要檢查其中的PE文件的簽名。我知道如何在用戶模式下做到這一點,並根據http://forum.sysinternals.com/topic19247.html[^]工作正常,但現在我需要在我的驅動程序中做同樣的事情,我不能使用頭像「wintrust.h」在我的司機,所以我無能爲力。關於如何在內核模式下驗證PE簽名的任何建議?如何在我的驅動程序中驗證PE的簽名?

感謝

回答

0

自檢不會給你任何東西,遺憾的是 - 這篡改司機將卸下檢查以及之一。然而,對於教育需求來說,這是一項有趣而富有挑戰性的任務。

您需要自己實施Authenticode驗證。 Authenticode基於PKCS#7/CMS和X.509證書。你需要在內核模式下重新實現所有這些東西。

雖然實現RSA很簡單,但ASN.1解析器和PKCS7格式處理要複雜得多。您可能希望找到一些可以適用於內核模式的現有C代碼。例如,您可以檢查cryptlib。 Cryptlib支持CMS(這是你需要的),並且是非常跨平臺的,所以你不應該有適應內核模式的問題。

+0

謝謝你的迴應。這看起來非常複雜。我想如果我在我的驅動程序中檢測到一個PE,然後將PE文件路徑傳遞給我的用戶模式應用程序,它會更容易... –

+0

這很有趣,我試圖做類似的事情。但是我不明白Authenticode如何在這種情況下提供幫助...... –

+0

@NorbertBoros Authenticode是用於簽署PE文件的標準。所以問題不在於它是否「幫助」,而在於如何在內核模式中使用它。回撥用戶模式應用程序(如前面評論中所考慮的OP)不會增加安全性 - 攻擊者只會用假代碼替換用戶模式代碼(或修補代碼)。 –