可能重复:
保护 .NET 代码免受逆向工程?
我们只是用C#winforms开发了一个应用程序,有什么好的加密方法可以帮助我们防止盗版吗?我看到一些软件可能需要硬件支持来保护他们的软件,如何实现呢?提前致谢 !
可能重复:
保护 .NET 代码免受逆向工程?
我们只是用C#winforms开发了一个应用程序,有什么好的加密方法可以帮助我们防止盗版吗?我看到一些软件可能需要硬件支持来保护他们的软件,如何实现呢?提前致谢 !
好的,您在这里混淆了几个不同的概念。
加密旨在使人们远离您的数据。
混淆用于尝试和防止对您的代码进行逆向工程。
许可用于确保使用的副本数量不超过购买的数量。
您将需要研究混淆和软件许可。混淆,因为您将希望防止他们对您的许可方案进行逆向工程以复制它或简单地绕过它。
从许可的角度来看,有许多不同的途径。硬件保护意味着您的应用程序查询某种类型的加密狗以检索有效密钥。如果加密狗存在且密钥良好,则您的应用程序将运行。
软件许可可能有点复杂。您通常会拥有某种类型的电话归属地代码,该代码应将人类可读/可键入密钥的加密版本发送到您的许可服务器以进行验证。您需要包含某种类型的附加机器信息(例如硬盘驱动器序列号),以确保不会为不同的盒子多次激活密钥。
有时激活过程会下载其他文件以使应用程序运行。我希望这能给你一个开始。
在您花费太多时间和精力阻止盗版之前,请确保您有一套明确的工作回报目标,以证明花费资源是合理的。
这并不像看起来那么简单 - 有很多证据表明大多数盗版者不会购买您的产品,无论您的安全性有多好。如果他们不能破解它,他们就会去别的地方或者不去。这意味着阻止盗版带来的额外销售很少。不仅如此,盗版甚至可能有助于传播您的软件,因此将它们锁定实际上可能会降低您的总销售额。
因此,您需要从如何给您或您的公司带来净收益的角度考虑为什么要阻止盗版,而不是仅仅阻止盗版获得收益。这不是零和情况,因此最大化自己的利润的方法通常包括让海盗也有他们的时刻。一个基本的混淆器或幼稚的产品密钥(它不一定是牢不可破的)可能会很好地捕捉到一些低调的果实,但超出此范围可能对您没有好处。
您可能还想阅读这些内容:
如何防止我的代码被盗?
保护 .NET 应用程序
我认为您正在寻找混淆?
保护代码通常是通过混淆(查找 Dotfuscator)来完成的。大多数情况下,FlexLm 或 Xheo 等第三方工具可以更好地提供许可保护。