你如何保护你的软件免遭非法分发?

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

你是否使用某种序列号检查? 硬件密钥?

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

你如何解决许可问题? (如pipe理浮动许可证)

编辑:我不是说任何开源,但严格的商业软件分发…

有许多,许多保护可用。 关键是:

  • 评估你的目标受众,他们愿意忍受什么
  • 了解你的观众的渴望玩无薪
  • 评估一个人愿意提出来打破你的保护的数量
  • 应用刚好足够的保护措施,以防止大多数人避免付款,而不会烦扰那些使用您的软件。

没有什么是牢不可破的,因此,衡量这些事情并select一个好的保护,而不是简单地打上你所能承受的最好(最坏的)保护就更重要了。

  • 简单的注册码(在线validation一次)。
  • 简单地注册可更换钥匙,经常在线validation。
  • encryption密钥保存程序algorithm的一部分(不能只是跳过检查 – 它必须运行的程序工作)
  • 硬件密钥(公钥/私钥密码)
  • 硬件密钥(包括运行在密钥上的程序algorithm部分)
  • Web服务运行关键代码(黑客永远不会看到它)

以上的变化。

-亚当

无论你走的路线是什么,收取一个合理的价格,使它容易激活,免费提供小的更新,并永不停用他们的软件。 如果你尊重你的用户,他们会奖励你的。 不过,无论你做什么,有些人最终会被盗版。

别。

海盗会海盗。 不pipe你提出什么解决scheme,它都可以被破解。

另一方面,你真正的付费客户是那些正在为这个垃圾而感到不便的人。

比购买更容易购买。 如果你把复制保护的范围,那么它只是让真正的交易价值很低。

使用一个简单的激活密钥,并保证客户,他们总是可以得到一个激活密钥或重新下载,如果他们失去了他们的软件。

任何复制保护(除了连接到您的银行的多人游戏和财务软件等在线组件),您都可以承担任何责任。 你要非法下载你的软件,至less比购买它要困难一些。

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

软件保护是不值得的 – 如果你的软件需求, 它将被打败,无论如何。

也就是说,硬件保护可以很好地工作。 一个好的方法就是:find一个(相当)简单但是必要的软件组件,并用Verilog / VHDL来实现它。 生成一个公私密钥对,并创build一个接受挑战string的Web服务,并使用私钥对其进行encryption。 然后制作一个包含公钥的USBencryption狗,并生成随机挑战string。 你的软件应该向USBencryption狗询问一个质询string,并把它发送给服务器进行encryption。 该软件然后将其发送到encryption狗。 encryption狗使用公钥validationencryption的挑战string并进入“启用”模式。 任何时候,您的软件都会调用encryption狗来执行您在HDL中编写的操作。 这样,任何人想要盗用你的软件,都必须弄清楚操作是什么,并重新实现它 – 比打败纯粹的软件保护要困难得多。

编辑:只是意识到一些validation的东西是从它应该是倒退,但我敢肯定,这个想法碰到。

微软软件许可证计划对于小企业来说是非常昂贵的。 如果你想自己设置,服务器的成本大约是$ 12,000。 我不推荐它为心脏的佯攻。

我们实际上是在我们的产品中实现了Intellilock 。 它可以让你做出所有的决定,你想要你的许可证是多么严格,这也是非常有成本效益的。 另外它还有混淆,编译器预防等

我见过的另一个很好的解决scheme是使用SoloServer 。 这是一个电子商务和许可证控制系统。 这是非常可configuration的,也许有点太复杂。 但从我所听到的来看,它做得非常好。

过去我也使用过网点的Desaware许可证系统。 与以上两者相比,这是一个相当轻量级的系统。 这是一个密码良好的许可证控制系统。 但是这是一个非常低级的API,你必须实现你的应用程序实际使用的几乎所有东西。

数字“权利”pipe理是业界最大的软件蛇油产品。 为了从传统的密码学中借用一个页面,典型的情况是,Alice不需要查理能够读取消息给Bob。 DRM不起作用,因为在应用中,Bob和Charlie是同一个人!

你最好提出一个反问题,那就是“如何让人们购买我的软件而不是窃取它?” 这是一个非常广泛的问题。 但通常从研究开始。 你知道谁会购买你想销售的软件types,然后制作吸引那些人的软件。

额外的一点是将更新/附件限制在合法拷贝上。 这可以像购买交易期间收到的订单代码一样简单。

检查Stardock软件,WindowBlinds和太阳帝国的罪恶等游戏的制作者,后者没有DRM,并从200万美元的预算中获得了可观的利润。

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

底线是,如果有人想要它足够坏 – 他们会逆向工程,你有任何保护。

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

祝你好运!

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

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

在与海盗交谈时阅读 。

通常有两个系统经常会感到困惑 –

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

许可使用商业软件包, FlexLM许多公司投入巨额资金认为他们也获得安全,这是一个常见的错误,这些商业软件包的关键发电机是丰富的。

我只会build议许可,如果你卖给那些合法地按使​​用量付费的公司,否则它可能比它的价值更努力。

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

我们几年前实现了一个FlexLM的无尘室克隆,我们也不得不加强我们的应用程序来抵御二进制攻击,它的漫长过程,你必须在每一个版本上重新审视它。 这也取决于你销售的是哪个全球市场,或者你的主要客户群是你需要做什么的。

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

给一点时间你的软件将永远被破解。 您可以search任何已知的软件的破解版本,以确认这一点。 但是为您的软件添加某种forms的保护仍然值得。

请记住,不诚实的人永远不会支付你的软件,总是find/使用破解版本。 即使没有授权计划,非常诚实的人也会永远坚持规则,因为那是他们的人。 但是大多数人都在这两个极端之间。

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

但是最近在电子艺界发布的经验表明,你可以远离授权。 如果你甚至让合法的人感到像罪犯,因为他们不断被validation,然后他们开始反叛。 因此,添加一些简单的许可来提醒人们,如果他们不诚实,但不止于此,不太可能促进销售。

数字版权pipe理这个,DRM – 出版商在他们的项目上强制使用数字版权pipe理是因为它是有利可图的。 他们的经济学家正在对我们从未见过的数据进行总结。 “DRM是邪恶的”巨魔正在走得太远。

对于低能见度的产品,简单的互联网激活将会停止随意复制。 任何其他复制可能会忽略你的底线。

这个想法让海盗们使用它的麻烦,他们不会买它,并会显示他们的朋友谁可能买它是双重的。

  1. 使用第三方服务的软件,盗版副本使用了宝贵的带宽/资源,这给合法用户带来了更糟糕的体验,使得我的sw看上去更受欢迎,并且由于第三方服务要求我支付更多的服务费用,的正在使用的带宽。

  2. 许多休闲游戏不会梦想自己破解sw,但是如果在像piratebay这样的网站上有一个容易评估的破解,他们会使用它,如果没有的话,他们可能会买它。

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

另外值得注意的是,制作一个程序很难破解是一回事,但是你也需要防止合法的副本被共享,否则有人可以简单地购买一个副本,然后
通过洪stream网站与成千上万的人分享。 把他们的名字/电子邮件地址embedded到许可证中的事实并不足以说服所有人这样做,而这只是真正需要解决的一个问题。

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

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

  2. 在第一个客户端启动客户端发送许可证到服务器和服务器validation它,导致一些标志被设置在客户端软件。 来自具有相同许可的其他客户的进一步请求被拒绝。 这种方法的麻烦是原来的客户端在重新安装软件或想使用不同的计算机时会遇到问题。

即使您使用某种生物指纹authentication,也会有人find解决办法。 真的没有可行的方法。 不要试图让你的软件不被黑客攻击,而是要考虑增加额外的复制保护与实现它所需要的时间和金钱之间的多less额外收入。 在某种程度上,采用不太严格的版权保护scheme将会更便宜。

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

正如已经指出的那样,软件保护绝不能保证万无一失。 你打算使用什么取决于你的目标受众。 举个例子,游戏并不是你永远能够保护的东西。 另一方面,服务器软件在互联网上分发的可能性要小得多,原因有很多(产品渗透率和责任感,一家大公司不想为盗版软件承担责任,海盗们只是在需求量巨大的情况下才会感到困扰)。 诚实地说,对于一个高调的游戏来说,最好的解决scheme可能是自己种下洪stream(秘密!),并以某种方式进行修改(例如,以便在玩了两周后popup消息告诉你请考虑通过购买合法副本来支持开发者)。

如果保护到位,记住两件事情。 首先,较低的价格通过让人们更倾向于支付购买价格来补充任何版权保护。 其次,保护不能妨碍使用者 – 最近看到Spore就是一个例子。

简单的,最好的解决scheme,就是充电前面。 设置一个适合你和他们的价格。

要求付款客户在付款后certificate自己是在付钱给客户的。 实施代码,使您的软件不运行浪费你的时间和金钱,并引入合法客户的错误和烦恼。 你花更多的时间做更好的产品会更好。

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

几乎所有的版权保护都是无效的,而且是一个可用性的噩梦。 其中一些问题,比如在你的客户机器上放置root套件变得不道德

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

您应该集中精力防止未经授权的执行 。 完全防止别人的机器上的代码执行是不可能的,但是你可以采取一定的措施来提高代码的高度,以便购买你的软件比盗取它更容易。

请参阅“ 开发软件保护和许可证”一文 ,其中解释了如何在开发应用程序时考虑许可问题。

强制免责声明和插件:我共同创立的公司生产用于.NET的OffByZero Cobalt软件许可解决scheme 。

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

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

这种模式只能走得这么远,可能会让一些消费者失望。

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

有几家公司要么承载和分发你的软件,要么提供一个完整的安装/购买应用程序,你可以自动完成这些工作,这可能不会增加你的成本。

我已经把软件卖给了消费者,我觉得这是在成本/易用性/保护方面的合理平衡。

我同意很多海报,没有软件版权保护scheme会阻止一个熟练的软件盗版。 对于基于.NET的商业软件,Microsoft软件许可证保护(SLP)是一个非常合理的解决scheme。 它支持时间限制和浮动许可证。 他们的定价从每次10美元起,每次激活5美元,保护组件看起来像广告一样工作。 这是一个相当新的产品,但买方要小心。

我build议使用简单的激活码(即使你知道它可以被打破),你真的不希望你的软件进入你的用户的方式,否则他们会把它推开。

确保他们可以重新下载软件,我build议一个网页,他们可以logging和下载你的软件后才支付(是的,他们应该能够下载多less次,直接,他们希望没有一个问题关于你为什么)。

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

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

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

如果您是软件开发人员,则可能的解决scheme之一是将元数据直接embedded到您的产品中。 查看来自redsunrise的一个实例销毁安全工具。

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