当前位置:  开发笔记 > 编程语言 > 正文

通过加密保护软件

如何解决《通过加密保护软件》经验,为你挑选了3个好方法。

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

我们想要删除此硬件加密狗并开始使用软件保护.基本上我们可以使用商业产品,但另一方面也不会破坏.我对加密知之甚少,这就是我发布这个的原因.如何在Windows计算机上存储无法使用Reflector或其他内容读取的密钥?但是,我应该能够访问用于测试许可证代码的密钥.

我只想要一个简单的解决方案,只需使用Reflector就无法攻击.

或者我问一个非常愚蠢的问题?


谢谢大家的快速和有用的回复.我不想在互联网上使用许可,因为应用程序并不总是在连接的计算机上运行.然后我会得到更多问题然后解决它们.我们现在很可能会寻求商业解决方案.似乎保护不是那么微不足道.

非常感谢!!



1> Ignacio Vazq..:

没有办法完全保护密钥.如果您的程序可以读取它,那么它可以被另一个程序读取.



2> Mark Brittin..:

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

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

那么,我们如何许可?

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

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

我说让他们给我们打电话很重要,因为我们以此为契机与他们讨论他们的设置,回答任何问题,让他们知道他们正在与真人打交道.很少有人有勇气尝试打电话和冒充另一家公司(我们查看并将他们的信息与我们的购买数据库进行比较).请注意,我们的套餐运行近2千美元,因此电话合理.如果您的套餐成本较低且数量较多,您可以通过电子邮件进行此操作.最后,我们使用call-in告诉用户如何使用新许可获得升级和技术支持.

最后,我们将密钥存储在应用程序的数据库(本地安装的MSDE/SQL Express数据库)中,这样任何复制应用程序的尝试都将是非常重要的,并且B)带来了大量特定于组织的数据.首先购买合法版本(使他们不太可能分享).许可密钥被加密并"分割"成两个不同的密钥,这两个密钥保存在两个不同的表中.因此,简单的"找到密钥并将其输入盗版版本"将无法正常工作.

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


您认为我的用户可以"轻松反编译"我的软件吗?VAST大多数计算机用户几乎不能使用*软件.确实,99.99%的人甚至不会理解"反编译软件"的含义.在其他0.01%中,也许百分之一的人会非常关心尝试.其中,可能有一半会成功.我*不*会给我的用户带来99.99995%的不便,以防止最后一小撮人破解应用程序 - 这将是一个可怕的商业决策.

3> Vinko Vrsalo..:

当然,绝对的答案是,坚定而有技巧的攻击者可以打破任何保护,但是,特别是对于没有高度需求或名望的软件,熟练和坚定的攻击者是罕见的,因此采取保护措施是有道理的.

要验证许可证,将密钥发送到中央位置是最安全的方法,因为他们必须破解您的服务器(或协议,注意)以便能够验证.这需要连接才能使用可能或可能不可行的软件.您还可以将"许可证服务器"与软件一起分发,以进行仅需要本地网络访问的大型安装.如果您不能并且必须仅在本地验证,那么您可以在本机代码中编写一个dll,这会使逆向工程变得更难.

为了保护代码本身,并使其保护更难绕过,混淆:

.NET混淆工具/策略

(为什么)我应该使用混淆?

我应该担心模糊我的.NET代码吗?

对于单个开发人员而言,c#代码保护的最佳价值是什么?

总而言之,您可以从打包的解决方案中获得更好的价值.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有