需要保护一些程序集不被修改(或者说如何判断编译后的程序集二进制文件是否被修改)。我如何通过内置的 .NET 方法在 .NET 4.0 中实现这一点?
问题仅在于dll文件修改检测,不在于反编译、逆向工程等保护。
最佳答案
可悲的是,强大的名称为消费者提供了保护。它们不向程序集的开发人员提供他们的代码未被修改的保护。 remove 很简单一个strong name .删除后可以根据需要进行修改。
即使是为消费者提供的保护也受到强名称的限制。由于没有公钥的中央注册表,因此无法知道程序集是由特定发布者签名的。黑客可以更改签名并在修改后使用自己的 key 重新签名。事实上,强名称实际上只能防止黑客修改系统运行时库......即便如此,我不确定它们对系统的实际攻击有多有效。
由于代码可以是easily modified即使是强命名,在您自己的代码中添加某种简单的散列检查也不会提供任何额外的保护。唯一有希望的方法是使用专业级 software protection tool提供 tamper detection .
关于c# - 如何保护 C# 代码不被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604627/