c# - 检查 EXE 上的数字签名

标签 c# .net exe x509

我的 .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/

相关文章:

python - 我试图将 python 文件转换为 exe 文件,但它不起作用

c# - 如何在 c#.net3.5 中设置焦点并在按钮单击事件上启动已经运行的应用程序?

c# - 在 C# 中转换数组的优雅方式?

c# - 将具有另一个结构数组的结构从 C# 传递到 C (P/Invoke)

c# - 如何从 C# 中的字符串中提取负整数和正整数

.net - cs 项目文件和 nuspec 文件的 future

c# - 如何深度复制强类型集合的成员

c# - CefSharp WPF Web 浏览器未显示或呈现

javascript 动画在 html 页面中工作,但相同的脚本在 .net 页面中不起作用

python - 为 jython 脚本创建可执行文件