我的 .NET exe 是使用 signtool 签名的。 使用此代码,我可以验证证书本身的有效性:
var cert = X509Certificate.CreateFromSignedFile("application.exe");
var cert2 = new X509Certificate2(cert.Handle);
bool valid = cert2.Verify();
但是,这只会检查证书本身,而不检查 EXE 的签名。因此,如果EXE被篡改,则该方法无法检测到。
如何检查签名?
最佳答案
您需要从 wintrust.dll
调用 (P/Invoke) WinVerifyTrust()
函数。在托管 .NET 中(据我所知)别无选择。
您可以找到此方法的文档 here .
有人已经在 SO 上问过这个问题。它没有被接受,但它应该是正确的(我只是滚动浏览)。 Take a look.
你也可以看看 this guide但他们确实在做同样的事情。
关于c# - 检查 EXE 上的数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24060009/