从 .NET 验证 dll 是否具有有效的签名且未被修改



我的 c# .NET 程序访问 c++ 库。

库使用证书签名,并且与程序位于同一文件夹中。

在运行时,在加载 c++ 库之前,我想确保该库确实是我的并且没有被篡改。

我已经能够从我的dll获取证书并验证证书:

X509Certificate2 cert = new X509Certificate2(X509Certificate.CreateFromSignedFile(filename));
Console.WriteLine(cert.Issuer);`
cert.Verify();`

这告诉我文件证书没问题,但是如果我随后对文件进行十六进制编辑并再次运行我的程序,证书仍然验证正常。

在证书中哪里可以找到库的哈希(不是证书的哈希(,以及如何创建库的哈希来比较它们,以便检测被篡改的文件?

我怀疑它应该很简单,也许我忽略了什么。

调用本机 Windows APIWinVerifyTrust,由 MSDN 的Microsoft记录,并用 C 语言编写示例。

如果您使用搜索引擎,则可能会有其他人管理的实例。

最新更新