我正在尝试编写一个 C# 程序来验证 exe 的数字签名。exe 是用验证码证书签名的,我想检测篡改。
我已经能够创建一个 SignedCms 实例,如下所述:Get timestamp from Authenticode Signed files in .NET
我认为 SignedCms.CheckSignature 可以解决问题,但这种方法永远不会引发异常......即使在我修改 exe 的某些位时也不会......
我正在尝试编写一个 C# 程序来验证 exe 的数字签名。exe 是用验证码证书签名的,我想检测篡改。
我已经能够创建一个 SignedCms 实例,如下所述:Get timestamp from Authenticode Signed files in .NET
我认为 SignedCms.CheckSignature 可以解决问题,但这种方法永远不会引发异常......即使在我修改 exe 的某些位时也不会......
我假设您已经浏览了 .NET Framework 文档,但没有找到您需要的内容。这个 StackOverflow 问题的答案有一个链接,描述了如何使用本机 Windows CryptQueryObject 函数来验证签名。所以剩下的就是查看PInvoke.NET 以了解如何将该功能带入 .NET。