C#:如何检测authenticode签名文件的篡改

时间:2011-10-01 20:21:36

标签: c# .net authenticode signtool

我正在尝试编写一个C#程序来验证exe的数字签名。 exe是用authenticode证书签名的,我想检测篡改。

我已经能够创建一个SignedCms实例,如下所述:Get timestamp from Authenticode Signed files in .NET

我假设SignedCms.CheckSignature可以解决这个问题,但是这个方法永远不会引发异常......即使不修改exe的某些部分......

2 个答案:

答案 0 :(得分:5)

我假设您已经浏览了.NET Framework文档并且没有找到您需要的内容。 this StackOverflow question的答案有一个链接,描述如何使用本机Windows CryptQueryObject函数来验证签名。所以剩下的就是查看PInvoke.NET to see how to bring that function into .NET

答案 1 :(得分:0)

你可以向signtool.exe /verify求助,并查看结果吗?

我最近编写了一个简单的应用程序,它使用相同的方法对可执行文件进行签名,效果很好。

Signtool on MSDN