如何防止加载重新编译的.net dll的开源项目

时间:2018-01-01 04:09:11

标签: c# asp.net

我有项目,我正在实施许可。我已决定使用opensource库,因为我了解无论您在保护应用程序方面付出多少努力,都可能被黑客入侵。

我正在考虑破解它的方法,现在我看到,基本上因为它是开源项目,所以应该很容易避免许可证的断言。黑客需要下载开源库,只需删除版本,其中assert方法不验证任何内容。

所以我的问题是什么是阻止加载重新编译库的选项。我想加载我在构建项目时使用的库。

2 个答案:

答案 0 :(得分:2)

最简单的解决方案是使用您的私钥对您编译的DLL进行签名,然后针对已签名的DLL编译项目的其余部分。这将确保当有人用不同的(或没有签名)替换DLL时,应用程序将无法加载。除非您不想让其他人验证您的DLL,否则您不需要拥有来自CA的证书,您只需生成自己的公钥/私钥即可。

此主题更详细地讨论了此主题(C#: why sign an assembly?)和this MSDN article处理如何签署您的DLL。

答案 1 :(得分:2)

您可以遵循此策略。编译软件时将Dll哈希存储在应用程序中(即使通过反编译,黑客也无法读取)。每次软件在客户端计算机上运行时都要比较它。如果文件哈希不匹配,则用户已对文件进行了调整。