【发布时间】:2018-06-11 08:08:36
【问题描述】:
我有项目并且正在实施许可。我决定使用开源库,因为我知道无论您为保护您的应用付出多少努力,它都可能以任何方式被黑客入侵。
我正在考虑破解它的方法,现在我发现基本上因为它是开源项目,所以应该很容易避免声明许可证。黑客需要下载开源库并简单地删除断言方法不验证任何内容的版本。
所以我的问题是有哪些选项可以防止加载重新编译的库。我想加载我在构建项目时使用的库。
【问题讨论】:
我有项目并且正在实施许可。我决定使用开源库,因为我知道无论您为保护您的应用付出多少努力,它都可能以任何方式被黑客入侵。
我正在考虑破解它的方法,现在我发现基本上因为它是开源项目,所以应该很容易避免声明许可证。黑客需要下载开源库并简单地删除断言方法不验证任何内容的版本。
所以我的问题是有哪些选项可以防止加载重新编译的库。我想加载我在构建项目时使用的库。
【问题讨论】:
最简单的解决方案是使用您的私钥对已编译的 DLL 进行签名,然后针对已签名的 DLL 编译项目的其余部分。这将确保当有人用不同的(或没有签名)替换 DLL 时,应用程序将无法加载。除非您不想让其他人验证您的 DLL,否则您不需要 CA 的证书,您可以生成自己的公钥/私钥。
此线程更详细地讨论了这个主题 (C#: why sign an assembly?) 和 this MSDN article 处理如何签署您的 DLL。
【讨论】:
您可以遵循此策略。当您编译软件时,将 Dll 哈希存储在您的应用程序中(即使通过反编译,黑客也无法读取)。每次当您的软件在客户端计算机上运行时进行比较。如果文件哈希不匹配用户已经修改了文件。
【讨论】: