【发布时间】:2018-11-02 10:23:27
【问题描述】:
我试图理解 .NET 中强命名程序集的意义。在谷歌搜索时,我注意到到处都说它确保代码来自我并且没有被篡改。所以我测试了它。我创建了一个简单的 DLL,使用新创建的 PFX 密钥对其进行签名,并由我的 WPF 应用程序引用它。好的,一切正常。当我用另一个 PFX 文件编译 DLL 时出现错误,所以没关系。
但是当我通过 ildasm 反编译 DLL、修改它并通过 ilasm 重新编译它时,WPF 应用程序仍然可以正常工作而没有任何错误。所以我篡改了强命名的 DLL 并用旧的手动更改它,应用程序仍然可以使用被篡改的 DLL。 PublicKeyToken 是一样的。那么强命名有什么意义呢?它不能确保代码没有被篡改,因为我对其进行了强命名。
【问题讨论】:
-
你能给出你用过的具体步骤和代码吗?
-
您是否在您绝对无法访问原始 PFX 的另一台机器上进行“篡改”?
-
也许您出于性能原因关闭了 PC 上的强名称检查? docs.microsoft.com/en-us/dotnet/framework/app-domains/…
标签: c# .net signing pfx strongname