.net - 通过加密保护软件

标签 .net protection

对于我们的软件,我们使用硬件加密狗来保护软件。没有任何保护是完美的,但这种商业解决方案是负担得起的,并使诚实的人保持诚实(如另一个线程中所述)。优点是 128 位 key 存储在硬件加密狗上“不可读”。

我们想移除这个硬件加密狗并开始使用软件保护。基本上我们可以使用商业产品,但另一方面也不是牢不可破的。我不太了解加密,这就是我发布这个的原因。如何在使用 Reflector 或其他方式无法读取的 Windows 计算机上存储 key ?但是,我应该能够访问用于测试许可证代码的 key 。

我想要一个简单的解决方案,不能通过简单地使用 Reflector 来破解。

还是我问了一个非常愚蠢的问题?

感谢大家的快速和有用的答复。我不想通过 Internet 使用许可,因为该应用程序并不总是在已连接的计算机上运行。然后我可能会遇到更多的问题然后解决它们。我们现在很可能会寻求商业解决方案。看来保护不是那么简单。

非常感谢!!

最佳答案

我经营的一家软件公司已经处理这个问题近 20 年了。作为开发人员和企业主,我想首先鼓励您稍微扩大您的目标。例如,将您的问题定义为“防止盗版”就是错误的。您的目标应该是最大化收入。

话虽如此,有些人根本不会购买您的软件,但他们可能会付出相当大的努力来免费获得它。他们获得免费副本并不“公平”,但投入大量资源来防止它在很大程度上是在浪费时间。事实上,这些人通常最终“合法”只是为了获得我们的更新列表、获得支持或因为他们的业务发展到他们现在可以负担我们的许可的程度。在这些情况下,最初的盗版最终会增加我们的收入。

那么,我们如何获得许可?

我们为每个新安装生成一个随机许可证号(10K 到 99K 之间的数字很好)。然后我们有一个生成匹配数字的算法(任何非平凡的事情都可以)。顺便说一下,我们使用随机数,以便在另一台计算机上重新安装的任何尝试都会导致不同的许可证/匹配号。

接下来,我们要求用户通过电话联系我们以获取与其许可证匹配的号码(这很重要)。软件查看他们输入的匹配号码,并将其与用户端生成的匹配值进行比较。如果匹配,则软件完全激活。

我说让他们给我们打电话很重要,因为我们利用这个机会与他们讨论他们的设置,回答任何问题,并让他们知道他们正在与真实的人打交道。很少有人敢于尝试打电话和冒充另一家公司(我们会查找他们并将他们的信息与我们的购买数据库进行比较)。请注意,我们的套餐费用将近 2000 美元,因此打电话是合理的。如果您的包裹成本更低且体积更大,您可以通过电子邮件进行此操作。最后,我们使用呼入来告诉用户如何使用他们的新许可证获得升级和技术支持。

最后,我们将 key 存储在应用程序的数据库(本地安装的 MSDE/SQL Express 数据库)中,以便任何复制应用程序的尝试都将 A) 非平凡和 B) 带来大量特定于组织的数据首先购买了合法版本(使他们不太可能分享)。许可 key 被加密并“拆分”为两个不同的 key ,保存在两个不同的表中。因此,简单的“找到 key 并在盗版中输入”是行不通的。

底线?当您使整个软件包不仅仅是软件,构建一些基本的保护机制,并引入人为因素时,您应该看到您不需要加密狗的费用和麻烦来最大化收入。

关于.net - 通过加密保护软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/227340/

相关文章:

Python for .Net 错误 : ImportError: No module named

.net - 为什么连接字符串需要保留在主 Web 应用程序和 ASP.NET MVC 中的数据访问项目中

.net - Active Directory 是否可以回滚?

c# - .Net 4.0 中的并行功能

wordpress - 创建 WooCommerce 暂存站点

php - 保护PHP密码的哈希和盐值

c# - Linq2SQL 表达式没有翻译的解决方案

c - 字符串比预期的要长,并被视为多个输入

需要 Android App Locker 密码

c++ - 是否有最常见的有害命令列表?