92

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

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

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

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

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

4

25 回答 25

76

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

  • 评估你的目标受众,以及他们愿意忍受什么
  • 了解观众对免费游戏的渴望
  • 评估某人愿意为破坏您的保护而付出的金额
  • 应用足够的保护来防止大多数人逃避付款,同时又不会惹恼那些使用您的软件的人。

没有什么是牢不可破的,所以衡量这些东西并选择一个好的保护比简单地拍打你能负担得起的最好(最差)的保护更重要。

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

以及上述的变体。

于 2008-09-21T02:24:32.180 回答
28

无论您走哪条路,都要收取合理的价格,使其易于激活,提供免费的小更新,并且永远不要停用他们的软件。如果您尊重您的用户,他们会因此而奖励您。尽管如此,无论您做什么,有些人最终都会盗版。

于 2008-09-21T02:22:25.337 回答
24

不。

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

另一方面,您的实际付费客户是那些因废话而感到不便的客户。

于 2008-09-21T03:52:33.530 回答
22

让买比偷更容易。如果您设置大量复制保护,那么它只会使拥有真实交易的价值变得非常低。

使用简单的激活密钥并向客户保证,如果他们丢失了激活密钥,他们可以随时获得激活密钥或重新下载软件。

您可以假设的任何复制保护(除了在线组件,如多人游戏和连接到您的银行的金融软件等)都会被击败。至少,您希望非法下载软件比购买软件稍微难一些。

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

于 2008-09-21T02:30:09.610 回答
16

软件保护不值钱——如果你的软件有需求,无论如何它都会被打败。

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

编辑:刚刚意识到一些验证的东西与它应该是相反的,但我很确定这个想法会出现。

于 2008-09-21T02:11:51.043 回答
15

Microsoft 软件许可计划对于小型企业来说非常昂贵。如果您想自己设置服务器,服务器成本约为 12,000 美元。我不推荐它来伪装心脏。

我们实际上只是在我们的产品中实现了Intellilock 。它让您可以决定您希望您的许可证有多严格,而且它也非常具有成本效益。此外,它还进行混淆、编译器预防等。

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

过去,我也使用过Desaware 许可证系统用于 dot net。与上述两个相比,它是一个非常轻量级的系统。就密码学而言,它是一个非常好的许可证控制系统。但它是一个非常低级的 API,您必须在其中实现应用程序实际使用的几乎所有内容。

于 2008-09-21T16:35:14.180 回答
9

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

你最好问相反的问题,即“我如何让人们购买我的软件而不是窃取它?” 这是一个非常广泛的问题。但它通常从做研究开始。您找出谁购买了您希望销售的软件类型,然后生产出吸引这些人的软件。

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

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

于 2008-09-21T03:48:36.987 回答
6

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

底线是,如果有人想要它足够糟糕 - 他们会逆向设计你拥有的任何保护。

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

祝你好运!

于 2008-09-21T02:02:39.020 回答
4

只要一点时间,您的软件总会被破解。您可以搜索任何知名软件的破解版本以确认这一点。但仍然值得为您的软件添加某种形式的保护。

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

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

但最近发布的诸如来自Electronic Arts的Spore的经验表明,您可以在许可方面走得更远。如果你让合法的人觉得自己像罪犯,因为他们不断得到验证,那么他们就会开始反抗。所以添加一些简单的许可来提醒人们他们是否不诚实,但除此之外的任何东西都不太可能促进销售。

于 2008-09-21T02:22:05.230 回答
3

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

于 2008-09-21T01:59:23.630 回答
3

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

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

对于使用商业包的许可,FlexLM许多公司在许可上投入巨资认为他们也获得了安全性,这是一个常见的错误,这些商业包的密钥生成器非常丰富。

如果您将产品出售给会根据使用情况合法付款的公司,我只会建议您获得许可,否则它可能会付出更多的努力而不是其价值。

请记住,随着您的产品取得成功,所有的许可和安全措施最终都会遭到破坏。所以现在决定是否真的值得付出努力。

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

查看我关于保护 DLL的另一个答案。

于 2008-09-21T02:32:04.923 回答
3

不完全是您正在寻找的答案,但它是来自游戏开发者的关于盗版的重要资源,该游戏开发者积极询问他们的盗版者他们为什么这样做。并且与您选择的答案的第一部分有关。

与海盗交谈中阅读。

于 2008-09-21T04:04:33.797 回答
2

正如已经指出的,软件保护永远不能保证是万无一失的。您打算使用什么很大程度上取决于您的目标受众。例如,游戏不是您可以永远保护的东西。另一方面,服务器软件不太可能在 Internet 上分发,原因有很多(想到产品渗透和责任;大公司不想为盗版软件承担责任,以及海盗只关心需求量足够大的东西)。老实说,对于一个备受瞩目的游戏,最好的解决方案可能是自己播种种子(秘密!)并以某种方式对其进行修改(例如,在玩了两周后它会弹出消息告诉你请考虑通过购买合法副本来支持开发人员)。

如果您采取保护措施,请记住两件事。首先,较低的价格将通过使人们更倾向于支付购买价格来补充任何复制保护。其次,保护不能妨碍用户 - 请参阅最近的示例 Spore。

于 2008-09-21T02:26:27.090 回答
2

DRM this, DRM that - 将 DRM 强制用于项目的出版商正在这样做,因为它是有利可图的。他们的经济学家根据我们谁都看不到的数据得出了这一结论。“DRM 是邪恶的”巨魔走得太远了。

对于低知名度的产品,简单的互联网激活将停止随意复制。任何其他复制对于您的底线来说都可能微不足道。

于 2008-09-21T17:08:29.263 回答
2

非法分发实际上是不可能防止的;问问美国唱片工业协会。数字内容只能被复制;模拟内容可以数字化,然后复制。

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

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

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

于 2009-11-07T06:24:50.277 回答
2

这种让海盗使用它的想法的麻烦是他们无论如何都不会购买它并且会向可能购买它的朋友展示它是双重的。

  1. 对于使用 3rd 方服务的软件,盗版副本正在占用宝贵的带宽/资源,这给合法用户带来更差的体验,让我的 sw 看起来更受欢迎,并且 3rd 方服务要求我为他们的服务支付更多费用,因为正在使用的带宽。

  2. 许多休闲人士不会梦想自己破解 sw,但如果在 piratebay 这样的网站上存在易于评估的破解,他们会使用它,如果没有,他们可能会购买。

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

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

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

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

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

于 2010-03-17T09:06:04.530 回答
2

即使您使用某种生物指纹认证,也有人会找到破解它的方法。确实没有实际的解决方法。与其试图让您的软件防黑客攻击,不如考虑通过添加额外的复制保护将带来多少额外收入,以及实施它所需的时间和金钱。在某些时候,使用不那么严格的复制保护方案会变得更便宜。

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

于 2010-05-27T00:07:15.217 回答
1

如果您对保护打算出售给消费者的软件感兴趣,我会推荐各种许可证密钥生成库中的任何一种(Google 搜索许可证密钥生成)。通常用户必须给你一些种子,比如他们的电子邮件地址或姓名,然后他们会取回注册码。

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

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

于 2008-09-21T02:15:46.850 回答
1

简单且最佳的解决方案就是预先为它们充电。设定一个适合您和他们的价格。

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

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

于 2008-09-21T22:26:40.530 回答
1

几乎所有的复制保护都是无效的,而且是可用性的噩梦。其中一些,例如将root-kits放在客户的机器上变得完全不道德

于 2008-09-21T22:32:16.177 回答
1

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

确保他们可以重新下载软件,我建议他们只有在付费后才可以登录和下载您的软件的网页(是的,他们应该能够直接下载任意次数,没有一个问题关于你的原因)。

把你的付费用户放在首位,当你是合法用户时,没有什么比被指控为罪犯更令人恼火的了(DVD 的反盗版警告任何人)。

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

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

于 2008-09-22T16:26:38.810 回答
0

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

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

不过,这种范式只能走这么远,并且可以关闭一些消费者。

于 2008-09-21T02:09:41.500 回答
0

我同意许多发帖者的观点,即没有任何基于软件的复制保护方案可以阻止熟练的软件盗版者。对于基于 .NET 的商业软件,Microsoft 软件许可保护 (SLP) 是一种价格非常合理的解决方案。它支持限时和浮动许可证。他们的起价为每月 10 美元 + 每次激活 5 美元,并且保护组件似乎像宣传的那样工作。不过,这是一个相当新的产品,所以买家要小心。

于 2008-09-21T16:16:28.530 回答
0

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

于 2010-05-26T23:29:29.677 回答
0

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

于 2011-02-11T13:39:55.997 回答