您如何保护软件免于非法发行?[关闭]


90

我很好奇您如何保护您的软件免于破解,黑客攻击等。

您是否使用某种序列号检查?硬件按键?

您是否使用任何第三方解决方案?

您如何解决许可问题?(例如,管理浮动许可证)

编辑:我不是在谈论任何开源,而是严格的商业软件发行...


77
我正在等待有人盗用我的软件的那一天。那将是真棒!

4
问题是,有一天有人盗版了您的软件,您可能不知道:-)
petr k。

7
在我看来,盗版无论如何都不会为您的软件付费,所以我不必担心它们。编写出色的软件,您会赚钱。
Mike

6
没有冒犯,但是“编写出色的软件,您会赚钱”只是部分正确。考虑MS Office。除了批评,它是好的软件。然而,世界平均水平,超过70%的Office副本是非法的。如果不是因为盗版,MS会不会赚更多?盗版真的与软件质量直接相关吗?
彼得·k。

5
@彼得·k:我不同意。盗版的一个重要副作用实际上是MSOffice(就此而言为MSWindows)的普及。如果MS能完全遏制盗版,它将败诉。@迈克:这是一个很好的观点。通过放置许可服务器等,我们只会为我们的付费客户
带来麻烦

Answers:


74

有很多很多保护可用。关键是:

  • 评估您的目标受众以及他们愿意承受的条件
  • 了解观众对无薪游戏的渴望
  • 评估某人愿意破坏您的保护的金额
  • 只需提供足够的保护,以防止大多数人避免付款,而不会惹恼那些使用您的软件的人。

没有什么是坚不可摧的,因此衡量这些东西并选择良好的保护比简单地掌控您能够承受的最佳(最差)保护更为重要。

  • 简单的注册码(一次在线验证)。
  • 使用可撤销密钥进行简单注册,并经常在线验证。
  • 加密密钥包含程序算法的一部分(不能只跳过检查-必须运行该程序才能使程序正常工作)
  • 硬件密钥(公共/专用密钥加密)
  • 硬件密钥(包括在密钥上运行的程序算法的一部分)
  • Web服务运行关键代码(黑客永远看不到它)

以及以上的变化。


有使用硬件密钥的例子吗?
卢卡斯卢

2
@Lukasz-它们也称为加密狗-连接到计算机的电子设备。请访问en.wikipedia.org/wiki/Dongle了解有关此选项的更多信息。
亚当·戴维斯

28

无论走什么路线,都要收取合理的价格,易于激活,免费提供较小的更新,并且永远不要停用其软件。如果您尊重用户,他们会为此奖励您。不过,无论您做什么,都会有人盗版。


说得好。我同意,关于保护软件的不仅仅是密钥和序列。无论如何,技术保护都是脆弱的,我们不应对这些东西施加太大的压力。
Jaya Wijaya

是的,我盗版软件(当然不是我所拥有的; D)的主要原因是价格过高。然后,当然,不付费的用户最终会使您的钱减少。因此,坚持公平的价格,您将赚到可观的钱。
Ponkadoodle 2010年

24

别。

海盗会海盗。无论您想出什么解决方案,它都可能并且将被破解。

另一方面,您的实际付费客户是那些被废话困扰的客户。


6
事实并非如此,有些愚昧无知的用户只会选择软件,因为他们根本不考虑软件。普通人如果不考虑,就会偷东西。
亚瑟·托马斯

9
我同意。FBI总是对我实际上付钱购买的DVD的介绍感到不安,“你不会偷车”!
ChristianDavén08年

6
如果做得正确,合法用户几乎看不见它。并且不要低估盗版对底线的影响。在许多市场中,需求相对缺乏弹性,因此“ DRM”可以带来巨大的收入差异。
smo


4
@MarkJ:实际上,任何希望保留其客户的代码所有者都应经常采用客户的POV ...
sleske

22

购买比偷窃更容易。如果您放了很多复制保护,那么这只会使拥有真正交易的价值变得很低。

使用一个简单的激活密钥,并向客户保证他们可以始终一旦丢失获得激活密钥或重新下载软件。

您可以假设的任何版权保护(除了在线组件(如与您的银行连接的多人游戏和财务软件等)之外)都将被击败。您至少希望非法下载软件比购买软件要困难一些。

我有一个从未玩过的PC游戏,因为上面有太多的复制保护垃圾,实际上下载虚假版本更容易。


++表示“使购买比盗窃更容易”。
AlcubierreDrive

+++“比购买更容易购买”!
丹尼斯·舍甫琴科2012年

15

软件保护不值钱-如果您的软件需求旺盛,无论如何都将被击败。

也就是说,硬件保护可以很好地发挥作用。它可以正常工作的一个示例方法是:找到软件的(相当)简单但必要的组件,并在Verilog / VHDL中实现它。生成一个公共-私有密钥对,并制作一个接受挑战字符串并使用私有密钥对其进行加密的Web服务。然后制作一个包含您的公钥的USB软件狗,并生成随机的质询字符串。您的软件应向USB加密狗询问挑战字符串,并将其发送到服务器进行加密。然后,软件将其发送到加密狗。加密狗使用公钥验证加密的质询字符串,并进入“启用”模式。然后,只要需要执行在HDL中编写的操作,您的软件就会调用加密狗。

编辑:刚刚意识到一些验证工作是应该做的事,但是我很确定这个想法会出现。


2
他们中的大多数人不是那样工作的,而只是实现算法的一部分,并且不进行公钥身份验证。例如,AutoCAD(或者是3dsmax?)在加密狗上进行了矩阵旋转。如果您没有加密狗,则旋转将/ slightly / off,这将随着时间的推移加总。
科迪·布罗维奇

1
这是一个聪明的把戏。如果未正确注册,则使软件工作不正常;并非完全错误,只是您一开始不会注意到它。
rpetrich's

1
同样,在决定使用USB软件狗进行软件保护时,请切记,当今很多软件在虚拟环境中运行,在虚拟环境中可能会限制对物理硬件(例如USB端口)的访问。更换加密狗也要付费(是的,客户会“丢掉”加密狗)。
PoppaVein

1
而且这些加密狗也存在裂缝-它们是可以击败的,就像使用列表响应(从真实加密狗记录的)来挑战/响应类型一样。对于算法编码的类型,将其分解,然后将算法重新插入到应用程序的二进制文件中。
CHII

5
几年来,这种保护措施阻止了Cubase / Nuendo(Windows上领先的DAW软件)被破解。要破解的最新版本有一些来自饼干的注释。他们声称这是他们甚至进行的最困难的一次破解。他们还指出,由于许多程序例程都碰到了加密狗,因此软件的性能下降了。他们的模拟加密狗工作更快。许多合法用户非常生气,最终还是安装了该破解程序只是为了获得更好的性能。
亚历克斯

15

对于小型企业而言,Microsoft软件许可计划的价格非常昂贵。如果您要自行设置,服务器成本约为12,000美元。我不建议这样做。

我们实际上只是实现了Intellilock在产品中。它使您可以决定所需许可证的严格程度,而且成本效益也很高。此外,它还可以进行混淆,防止编译器等。

我见过的小型/ 中型企业使用的另一个很好的解决方案是SoloServer。它更多地是一个电子商务和许可证控制系统。它是非常可配置的,可能有点太复杂了。但是从我所听到的来看,它做得很好。

过去,我也将Desaware许可证系统用于点网。与上述两个相比,这是一个非常轻巧的系统。就密码方面而言,这是一个非常好的许可证控制系统。但这是一个非常低级的API,您必须在其中实现应用程序实际使用的几乎所有功能。


9

数字“权利”管理是业内最大的软件蛇油产品。要从经典密码学中借用一个页面,典型的情况是Alice希望向Bob发送消息,而Charlie却无法读取它。DRM不起作用,因为在其应用程序中,Bob和Charlie是同一个人!

您最好提出反问题,即“如何让人们购买我的软件而不是窃取它?”。这是一个非常广泛的问题。但这通常是从进行研究开始的。您可以确定谁购买了您想出售的软件,然后生产出对那些人有吸引力的软件。

此操作的附加功能是将更新/附件限制为仅合法副本。这可以像在购买交易期间收到的订购代码一样简单。

看看Stardock软件,WindowBlinds的制造商以及诸如《太阳帝国》的《罪孽》之类的游戏,后者没有DRM,并且从200万美元的预算中获得了可观的利润。


+1为措辞明确的反问题!
Ilari Kajaste 09年

6

有几种方法,例如使用处理器ID生成“激活密钥”。

最重要的是,如果有人希望它足够糟糕,他们将对您拥有的任何保护进行反向工程。

最安全的方法是在运行时或硬件搭扣中使用在线验证。

祝好运!


4

给您一点时间,您的软件将永远被破解。您可以搜索任何知名软件的破解版本来确认。但是,仍然值得为您的软件添加某种形式的保护。

请记住,不诚实的人永远不会为您的软件付费,而总会找到/使用破解版。非常诚实的人即使没有许可计划,也总是会遵守规则,仅因为那是他们的身份。但是大多数人都处于这两个极端之间。

添加一些简单的保护方案是使大多数中间人以诚实的方式行事的好方法。这是一种让他们记住该软件不是免费的方法,他们应该为适当数量的许可证付费。实际上,许多人对此做出了回应。企业尤其擅长遵守规则,因为经理不会花费自己的钱。消费者不太可能遵守规则,因为这是他们自己的钱。

但是,最近从《Electronic Arts》的《孢子》等发行中获得的经验表明,您可以在许可方面走得更远。如果您甚至使合法的人因为不断受到验证而感觉像罪犯,那么他们就会开始叛逆。因此,添加一些简单的许可以提醒人们是否不诚实,但除此之外的其他事情不可能促进销售。


3

像《魔兽世界》(WoW)这样的仅在线游戏就已经制作完成,每个人每次都必须连接到服务器,因此可以不断验证帐户。没有其他方法可用于bean。


1
好吧,对于90%的软件,我都不认为这是一个现实的解决方案。我应该在帖子中更清楚地说明-我们正在构建的软件不是在线游戏。尽管这个问题的意思是笼统的,所以您的答案当然仍然很有效。
彼得·k。

3
好了,有一些不需要付费的专用服务器。
杰里米

可以肯定的是,Petr对于每个人来说都不是现实的,但这仍然是事实:没有其他方法可以工作。不客气,可以肯定,但确实如此。
杰夫


3

通常,有两个系统经常会混淆-

  • 许可或激活跟踪,合法合法使用
  • 防止非法使用的安全性

要获得许可,请使用商业软件包FlexLM许多公司在许可方面投入了大量资金,认为他们也可以获得安全性,这是常见的错误,因为这些商业软件包的密钥生成器数量众多。

如果您向将根据使用情况合法付款的公司出售产品,我只会建议您许可,否则,它的努力可能超过其价值。

请记住,随着您产品的成功,最终将违反所有许可和安全措施。因此,现在就决定是否值得付出努力。

几年前,我们实现了FlexLM的无尘克隆,我们还不得不增强应用程序以抵抗二进制攻击,因为二进制代码的过程很长,您必须在每个发行版中都对其进行重新访问。这实际上还取决于您也销售哪些全球市场,或者您主要的客户群在做什么。

请查看我有关保护DLL的其他答案。


2

正如已经指出的那样,永远不能保证软件保护是万无一失的。您打算使用的内容在很大程度上取决于目标受众。例如,游戏并不是您永远可以保护的东西。另一方面,由于多种原因,服务器软件不太可能在Internet上分发(想到产品渗透率和责任;大型公司不希望对盗版软件负责),以及海盗只会为需求量大的东西烦恼。老实说,对于一个引人注目的游戏,最好的解决方案可能是自己(对种子进行种子加密)(以秘密方式!)并以某种方式对其进行修改(例如,这样,在玩了两周后会弹出一条消息,提示您:请考虑通过购买合法副本来支持开发人员)。

如果您设置保护措施,请牢记两点。首先,较低的价格将使人们更倾向于支付购买价格,从而补充了任何版权保护。其次,保护绝不能妨碍用户-有关最新示例,请参见Spore。


2

这就是DRM,DRM即是-迫使DRM进行其项目的发布商之所以这样做,是因为它有利可图。他们的经济学家正在我们从未见过的数据上得出结论。“ DRM是邪恶的”巨魔走得太远了。

对于可见度较低的产品,简单的Internet激活将停止随意复制。其他任何复制都可以忽略不计。


2

非法分发实际上是不可能防止的;只是问RIAA。数字内容只能被复制;模拟内容可以数字化,然后复制。

您应该集中精力防止未经授权的执行。永远不可能完全阻止在别人的机器上执行代码,但是您可以采取某些步骤将门槛提高到足够高的水平,以使购买软件比盗版软件容易。

查看文章“ 开发软件保护和许可”,该文章解释了如何在考虑许可的情况下最好地开发应用程序。

强制性免责声明和插件:我与人共同创立的公司为.NET生产OffByZero Cobalt软件许可解决方案


2

只让海盗使用它的想法给他们带来了麻烦,他们无论如何也不会购买它,并向可能会购买它的朋友展示他们的想法,这是双重的。

  1. 借助使用第三方服务的软件,盗版副本占用了宝贵的带宽/资源,这给合法用户带来了更糟糕的体验,使我的软件看上去比以前更受欢迎,并且第三方服务要求我为他们的服务支付更多费用,因为使用的带宽的百分比。

  2. 许多随便的人都不会梦想自己破解瑞士法郎,但是如果在piratebay这样的网站上存在容易评估的漏洞,他们会使用它,如果没有,他们可能会购买。

这种一旦发现就不会禁用盗版软件的概念似乎也很疯狂,我不明白为什么要让某人继续使用他们不应该使用的软件,我想这只是盗版者的看法/希望。

另外,值得注意的是,使程序难以破解是一回事,但是您还需要防止共享合法副本,否则,有人可以简单地购买一个副本,然后
通过torrent网站与成千上万的其他人共享它。在许可证中嵌入其名称/电子邮件地址这一事实不足以劝阻每个人这样做,而实际上只需要一个就可以解决问题。

我看到的防止这种情况的唯一方法是:

  1. 每次启动时都要让服务器检查并锁定许可证,并在程序退出时释放许可证。如果另一个客户端以相同的许可证启动而第一个客户端具有许可证,则该客户端将被拒绝。这种方式不会阻止许可证被多个用户使用,但会阻止许可证被多个用户同时使用-这已经足够了。它还允许合法用户在其任何计算机上转移许可证,从而提供更好的体验。

  2. 在第一次启动客户端时,客户端会向服务器发送许可证,服务器会对其进行验证,从而导致在客户端软件中设置一些标志。来自其他具有相同许可证的客户的进一步请求将被拒绝。这种方法的问题在于,如果原始客户端重新安装软件或想要使用其他计算机,则原始客户端将出现问题。


2

即使您使用某种生物指纹识别,也有人会找到破解它的方法。真的没有解决的办法。与其尝试使您的软件不受黑客攻击,不如考虑通过添加额外的复制保护来带来多少额外的收入,以及实现它所花费的时间和金钱。在某个时候,采用不太严格的复制保护方案会变得更便宜。

这取决于您的软件产品究竟是什么,但是一种可能性是将程序的“有价值”部分移出软件,并由您独占控制。您需要为该软件收取适度的费用(主要用于支付打印和发行成本),并且可以从外部组件获得收入。例如,以低价出售(或与其他产品免费捆绑在一起)但出售其病毒定义更新服务的订阅的反病毒程序。使用该模型,预订您的更新服务的盗版副本不会造成太大的财务损失。随着“云”中应用程序的日益普及,此方法变得更易于实现;将应用托管在您的云上,并向用户收取云访问费用。这不


1

如果您有兴趣保护打算出售给消费者的软件,则建议您使用多种许可证密钥生成库中的任何一种(Google搜索许可证密钥生成)。通常,用户必须给您某种种子,例如其电子邮件地址或名称,然后他们才能获取注册码。

多家公司将托管和分发您的软件,或者提供一个完整的安装/购买应用程序,您可以与之集成并自动执行此操作,而无需花费任何额外费用。

我已将软件出售给消费者,我发现这在成本/易用性/保护性之间取得了适当的平衡。


1

最简单,最好的解决方案是预先收取费用。设定一个适合您和他们的价格。

要求付费客户证明他们已经付款之后正在付费,这让他们很生气。实施代码使软件无法运行会浪费您的时间和金钱,并且会给合法客户带来错误和烦恼。花时间去做更好的产品会更好。

许多游戏/等都会“保护”第一个版本,然后由于与实际客户的兼容性问题而放弃第一个补丁中的保护。如果您坚持一定程度的保护,这不是一个不合理的策略。


1

几乎所有的复制保护都是无效的,也是可用性的噩梦。其中的一些,例如将root-kit放在客户的计算机上,这是完全不道德的


我投反对票-您假设每个有反计划的人都在从事非法活动,例如根套件。
杰森·肖特

不,我不这么认为。我明确地说了一些。而且,有大量有据可查的DRM rootkit案例。
wnoise 2010年

0

使产品的一部分成为需要连接和身份验证的在线组件。这里有些例子:

  • 线上游戏
  • 病毒防护
  • 垃圾邮件防护
  • 笔记本电脑追踪软件

但是,这种范例仅适用于很长一段时间,可以关闭某些消费者。


0

我同意许多发布者的观点,即没有基于软件的复制保护方案会阻止熟练的软件盗版者。对于基于商业.NET的软件,Microsoft软件许可保护(SLP)是价格非常合理的解决方案。它支持限时和浮动许可证。它们的起价为10美元/月+每次激活5美元,而且保护组件似乎按广告中的说明工作。不过,这是一项相当新的产品,因此请买家当心。


2011年,最小套餐的SLP价格已上涨至145欧元/月。
Michael Olesen

0

我建议使用简单的激活密钥(即使您知道它可能会被破坏),您确实不希望软件妨碍用户的使用,否则他们只会将其推开。

确保他们可以重新下载软件,我建议创建一个网页,让他们可以在付款后登录并下载软件(是的,他们应该能够直接按期望的次数进行多次下载,而不会出现单个问题)关于您的原因)。

最重要的是,如果您是付费用户,那么只要您是合法用户(DVD的反盗版警告任何人),您就会被指控为犯罪分子,这无非是激怒您的付费用户。

您可以添加一项服务,该服务可以在联机时针对服务器检查密钥,并且如果两个不同的IP使用相同的密钥,则弹出建议购买另一个许可证。

但是请不要停用它,它可能是一个乐于助人的用户,向朋友展示您的软件!!!


0

如果您是软件开发人员,则可能的解决方案之一是将元数据直接嵌入到您的产品中。从redsunrise中检出实例Destruction Security工具。


0

我们使用自己的许可系统对我们的商业软件进行许可-这就是我们销售的产品(许可管理工具)。我们通常出售订阅许可证,但也可以根据使用情况出售。到目前为止,它对我们来说是安全的:www.agilis-sw.com

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.