我正在尝试以编程方式验证代码签名证书,如2014 年的这个问题中所述。遵循建议后,我仍然无法找到一致的工作解决方案来确定我的 .exe 何时被篡改(即哈希不再匹配)
from的WinVerifyTrust方法wintrust.dll是最准确的,但是在我的可执行文件被混淆/VM'd 之后,我似乎得到了误报。在这种情况下,我得到 (int)2148204800 的结果,即使 .exe 已有效签名且未被篡改。我也反对使用 Windows API 调用,因为我希望代码尽可能可移植。
其他方法(例如X509Certificate.CreateFromSignedFile().Verify()Powershell 方法)当然不会验证 exe 的哈希值,因此返回 true。
在过去的 4 年中是否有任何新的方法来验证 .exe 的哈希值,最好是在纯 .NET 中?我对一个简单地验证哈希而不是整个证书(如果可能的话)的解决方案感到满意。