是否可以防止 DLL 被修改



是否可以对托管 (.NET) DLL 进行签名或以其他方式保护不被修改?我正在寻找可能的解决方案,这些解决方案可以检测对 DLL 的更改并防止它们被 .NET 运行时加载。我不介意有人可以在反射器或 ILSpy 中加载 DLL - 只要修改后的 DLL 无法执行,我就可以了。

我对这个主题进行了一些搜索,但大多数文章/讨论都建议混淆,这不是我想要的。我以为对 DLL 进行数字签名可以做到这一点,但与同事的聊天让我对此表示怀疑,而且我在这方面只有肤浅的知识。

任何建议将不胜感激。

对 DLL 进行签名不会阻止其他人反编译然后修改您的 DLL。它确实阻止了他们这样做,然后将结果作为原始结果传递出去。换句话说,如果调用方决定信任修改后的 DLL,它将执行它,但任何期望它具有公钥标记的代码都将拒绝它。

对库进行签名将阻止修改。 这样做的缺点是,一旦你对这个库进行了签名,你也必须对它使用的所有子库进行签名。 如果您使用的是 NuGet 库中的内容,这可能会很痛苦。

理论上,一旦 dll 签名,就会创建一个签名以确保它没有被修改。 如果有人入侵了它,那么框架就不会加载它。

最新更新