您如何保护您的软件免受非法分发?

时间:2008-09-21 01:58:00

标签: security licensing protection software-distribution piracy

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

您是否使用某种序列号检查?硬件钥匙?

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

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

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

25 个答案:

答案 0 :(得分:70)

有许多很多很多保护措施可供选择。关键是:

  • 评估您的目标受众,以及他们愿意忍受的内容
  • 了解观众无需付费的愿望
  • 评估某人愿意为破坏您的保护而提出的金额
  • 应用足够的保护措施,以防止大多数人避免付款,同时不会使那些使用您软件的人烦恼。

没有什么是坚不可摧的,所以更重要的是要衡量这些事情,并选择一个良好的保护,而不是简单地打击你能够承受的最好(最差)保护。

  • 简单注册码(在线验证一次)。
  • 使用可重新启动的密钥进行简单注册,经常在线验证。
  • 加密密钥保存程序算法的一部分(不能只是跳过检查 - 必须运行程序才能运行)
  • 硬件密钥(公钥/私钥加密)
  • 硬件密钥(包括在密钥上运行的程序算法的一部分)
  • Web服务运行关键代码(黑客永远不会看到它)

以上的变化。

- 亚当

答案 1 :(得分:28)

无论您走哪条路线,都要收取合理的价格,轻松激活,提供免费的小更新,永远不要停用他们的软件。如果您尊重用户,他们会奖励您。不过,无论你做什么,有些人最终会盗版它。

答案 2 :(得分:24)

别。

海盗会盗版。无论你提出什么解决方案,都可以而且将会被破解。

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

答案 3 :(得分:22)

购买比偷窃更容易。如果你放置了复制保护的土墩,那么它只会让拥有真实交易的价值相当低。

使用简单的激活密钥并客户表明他们始终获取激活密钥或重新下载软件(如果他们失去了他们的软件)。

任何版权保护(除了仅限在线的组件,如连接到您银行的多人游戏和财务软件等),您可以假设将被击败。你想要非法下载你的软件,至少要比购买它更难。

我有一个我从未打过的PC游戏,因为它上面有很多版权保护垃圾,下载假版本实际上更容易。

答案 4 :(得分:15)

微软软件许可证计划对于小型企业而言非常昂贵。如果你想自己设置,服务器成本约为12,000美元。我不推荐它用于佯攻。

我们实际上刚刚在我们的产品中实施了Intellilock。它可以让您做出有关您希望获得许可的严格程度的所有决策,并且它也非常具有成本效益。此外,它还可以进行模糊处理,编译器预防等等。

我见过的小型/中级企业使用的另一个好方法是SoloServer。它更像是一个电子商务和许可控制系统。它非常易于配置,可能有点过于复杂。但从我所听到的情况来看,它做得非常好。

我过去也使用过{net}网络Desaware license系统。与上述两个相比,它是一个非常轻量级的系统。就加密声音而言,它是一个非常好的许可控制系统。但它是一个非常低级的API,您必须实现几乎所有应用程序实际使用的内容。

答案 5 :(得分:15)

软件保护是不值得的 - 如果您的软件需要它被击败,无论如何。

也就是说,硬件保护可以很好地运行。它可以很好地工作的一个示例方法是:找到一个(相当)简单但必要的软件组件,并在Verilog / VHDL中实现它。生成一个公共 - 私有密钥对,并创建一个Web服务,该服务接受挑战字符串并使用私钥对其进行加密。然后制作一个包含公钥的USB加密狗,并生成随机挑战字符串。您的软件应该向USB加密狗询问挑战字符串并将其发送到服务器进行加密。然后软件将其发送到加密狗。加密狗使用公钥验证加密的质询字符串,并进入“启用”模式。然后,只要需要执行您在HDL中编写的操作,您的软件就会调用加密狗。这样,任何想要盗版软件的人都必须弄清楚操作是什么并重新实现它 - 比打败纯软件保护要困难得多。

编辑:刚刚意识到一些验证内容是从它应该的内容倒退,但我很确定这个想法会遇到。

答案 6 :(得分:9)

数字“权利”管理是业内最大的软件蛇油产品。借用经典密码学中的页面,典型的情况是Alice想要在没有Charlie能够阅读的情况下向Bob发送消息。 DRM不起作用,因为在其应用中,Bob和Charlie是同一个人!

你最好问一个相反的问题,即“如何让人们购买我的软件而不是偷它?”这是一个非常广泛的问题。但它通常从做研究开始。你弄明白谁买了你想卖的软件,然后生产出吸引那些人的软件。

此附加说明仅限于对合法副本的更新/附加组件。这可以像购买交易期间收到的订单代码一样简单。

查看Stardock软件,WindowBlinds的制造商和Sins of a Solar Empire等游戏,后者没有DRM,并从200万美元的预算中获得可观的利润。

答案 7 :(得分:6)

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

最重要的是,如果有人想要它足够糟糕 - 他们会对你拥有的任何保护进行反向工程。

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

祝你好运!

答案 8 :(得分:4)

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

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

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

但是最近对来自 Electronic Arts Spore 等版本的体验表明,您可以在许可方面走得更远。如果你让合法的人感觉像犯罪分子,因为他们经常被证实,那么他们就会开始反叛。因此,添加一些简单的许可,以提醒人们,如果他们是不诚实的,但除此之外的任何东西都不太可能促进销售。

答案 9 :(得分:3)

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

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

对于许可使用商业软件包,FlexLM许多公司投入大量资金用于许可认为他们也获得了安全性,这是一个常见的错误,这些商业软件包的关键生成器非常丰富。

如果您向合法按照使用情况付款的公司出售,我只会建议许可,否则可能比其价值更多的努力。

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

我们多年前实现了FlexLM的洁净室克隆,我们还必须增强我们的应用程序以抵御二进制攻击,其漫长的过程,您必须在每个版本中重新访问它。这也取决于您销售的全球市场,或者您的主要客户群在哪里。您需要做什么。

securing a DLL上查看我的另一个答案。

答案 10 :(得分:3)

这不是您正在寻找的答案,但它是一个很好的盗版资源,来自游戏开发者,他们主动询问他们的海盗他们为什么这样做。并且与您选择的答案的第一部分有关。

Talking to Pirates读取它。

答案 11 :(得分:3)

魔兽世界(WoW)等在线游戏制作完成后,每个人都必须每次都连接到服务器,因此可以不断验证帐户。没有其他方法适用于bean。

答案 12 :(得分:2)

DRM,DRM - 在他们的项目上强制使用DRM的出版商正在这样做,因为它有利可图。他们的经济学家正在对我们没有人会看到的数据做出总结。 “DRM是邪恶的”巨魔有点太过分了。

对于低能见度的产品,简单的互联网激活将停止随意复制。任何其他复制都可能与您的底线无关。

答案 13 :(得分:2)

即使您使用某种生物识别指纹身份验证,也会有人找到破解它的方法。实际上并没有实用的方法。不要试图让您的软件防黑客,而是考虑通过添加额外的复制保护来带来多少额外收入,而不是实现它所需的时间和金钱。在某些时候,采用不太严格的复制保护方案会更便宜。

这取决于您的软件产品究竟是什么,但一种可能性是将程序的“有价值”部分移出软件并将其置于您的独家控制之下。您需要为该软件收取适当的费用(主要是为了支付打印和分发费用),并从外部组件中获得收入。例如,一种廉价销售的防病毒程序(或与其他产品免费捆绑销售),但销售其病毒定义更新服务的订阅。使用该模型,订阅您的更新服务的盗版副本不会造成很大的经济损失。随着“在云中”应用程序的日益普及,这种方法变得越来越容易实现;在云上托管应用程序,并向用户收取云访问权限。这并不能阻止某人重新实施自己的云以消除对您服务的需求,但这样做所花费的时间和精力很可能超过收益(如果您保持定价模式合理)。

答案 14 :(得分:2)

这个想法只是让海盗使用它的麻烦,他们不管怎么说都不会买它,并会告诉他们可能买它的朋友是双重的。

  1. 使用第三方服务的软件,盗版副本耗尽宝贵的带宽/资源,给合法用户带来更糟糕的体验,让我看起来更受欢迎,并且有第三方服务要求我由于使用的带宽,为他们的服务支付更多费用。

  2. 许多休闲人员不会梦想破解sw本身,但如果像piratebay这样的网站上有一个容易的可评估的破解,他们会使用它,如果没有他们可能会购买它。

    < / LI>

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

    此外,值得注意的是,制作程序难以破解是一回事,但您还需要防止合法副本被共享,否则有人可能只需购买一份副本然后再 通过torrent网站与成千上万的人分享。在许可证中嵌入他们的名字/电子邮件地址这一事实并不足以阻止所有人这样做,而且只有一个人才能解决问题。

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

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

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

答案 15 :(得分:2)

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

您应该集中精力防止未经授权的执行。永远不可能完全阻止在其他人的机器上执行代码,但您可以采取某些步骤来提高标准,使其更容易购买您的软件而不是盗版。

请查看文章Developing for Software Protection and Licensing,该文章介绍了如何最好地开发应用程序并考虑许可。

强制性免责声明&amp;插件:我共同创办的公司生产OffByZero Cobalt software licensing solution for .NET

答案 16 :(得分:2)

正如已经指出的那样,软件保护从不保证是万无一失的。您打算使用的内容在很大程度上取决于您的目标受众。例如,游戏不是你永远能够保护的东西。另一方面,服务器软件不太可能在互联网上分发,原因有很多(产品渗透和责任可以想到;大公司不想对盗版软件负责,以及海盗只会在需求量大的情况下烦恼。老实说,对于一个高调的游戏,最好的解决方案可能是自己播种(秘密!)并以某种方式修改它(例如,这样,经过两周的游戏,它会弹出消息告诉你请考虑通过购买合法副本来支持开发人员。)

如果你保护到位,请记住两件事。首先,较低的价格将使人们更倾向于支付购买价格来补充任何版权保护。其次,保护措施不得妨碍用户 - 请参阅最近的Spore示例。

答案 17 :(得分:1)

简单而又最好的解决方案就是预先充电。设定适合您和他们的价格。

要求付费客户证明他们在付款之后付钱给客户,只是让他们生气。实施代码以使您的软件不运行会浪费您的时间和金钱,并为合法客户引入错误和烦恼。你最好花时间制作更好的产品。

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

答案 18 :(得分:1)

几乎所有的版权保护都是无效的,也是一种可用性的噩梦。其中一些,例如在客户的机器上放置root工具包就变得非常不道德

答案 19 :(得分:1)

如果您有兴趣保护您打算销售给消费者的软件,我会推荐各种许可证密钥生成库(Google搜索许可证密钥生成)。通常,用户必须为您提供某种种子,例如他们的电子邮件地址或姓名,然后他们会返回注册码。

有几家公司要么托管和分发您的软件,要么提供一个完整的安装/购买应用程序,您可以自动集成并自动执行此操作,而不需要额外付费。

我已经向消费者销售软件,我发现这是成本/易用性/保护的正确平衡。

答案 20 :(得分:0)

我建议使用简单的激活密钥(即使你知道它可以被破坏),你真的不希望你的软件以你的用户方式进入,或者他们只是将它推开。

确保他们可以重新下载软件,我建议一个网页,他们可以在付费后才能记录和下载你的软件(是的,他们应该可以直接下载他们希望的数量,没有关于你为什么这么说的一个问题。

最重要的是推动你的付费用户,当你是一个合法的用户时,被指控为犯罪分子没有什么比这更令人恼火了(DVD的反盗版警告任何人)。

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

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

答案 21 :(得分:0)

我同意很多海报,没有基于软件的复制保护方案会阻止熟练的软件盗版。对于基于.NET的商业软件,Microsoft软件许可保护(SLP)是一种价格非常合理的解决方案。它支持有时间限制和浮动许可证。它们的价格从每个10美元/月+每次激活5美元开始,保护组件似乎按照宣传的方式工作。不过,这是一个相当新的产品,所以买家要小心。

答案 22 :(得分:0)

将您的产品的一部分作为需要连接和身份验证的在线组件。以下是一些例子:

  • 在线游戏
  • 病毒防护
  • 垃圾邮件保护
  • 笔记本电脑跟踪软件

这种模式只是走了这么远,可以让一些消费者失望。

答案 23 :(得分:0)

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

答案 24 :(得分:0)

如果您是软件开发人员,可能的解决方案之一是将元数据直接嵌入到您的产品中。查看theredsunrise的实例销毁安全工具。