检查EXE上的数字签名

LTR*_*LTR 13 .net c# exe x509

我的.NET exe是使用signtool签名的.使用此代码,我可以验证证书本身的有效性:

var cert = X509Certificate.CreateFromSignedFile("application.exe");
var cert2 = new X509Certificate2(cert.Handle);
bool valid = cert2.Verify();
Run Code Online (Sandbox Code Playgroud)

但是,这仅检查证书本身,而不检查EXE的签名.因此,如果EXE被篡改,则此方法不会检测到它.

如何查看签名?

pep*_*epo 13

你需要调用(P/Invoke)WinVerifyTrust()函数wintrust.dll.(据我所知)在托管.NET中没有其他选择.

您可以在此处找到此方法的文档.

有人已经问过这个问题了.它不被接受,但它应该是正确的(我只滚动).看一看.

你也可以看看这个指南,但他们也是这样做的.