如何保护您的软件代码?

时间:2010-03-03 00:47:15

标签: protection copy-protection data-protection

  

可能重复:
  How do you protect your software from illegal distribution?
  Best practice to prevent software copy

假设情况:

让我们说我已经从头开始构建了一个软件产品,并且做了很棒的事情。唯一的问题是,一旦有人看了代码,他们就会很容易理解它,并且可以轻松地自己构建代码。

现在,问题是我从头开始构建代码100%并使用混合的API调用。 没有其他人参与代码的开发。

如果我想销售这款产品,那么比我聪明的人能够对整个产品进行逆向工程并提出更好的产品的保证是什么?

现在我正在考虑分割整个代码。添加大量冗余代码和大量评论。

是否有任何软件加密软件代码,这将使调试,故障排除和理解代码如何工作几乎不可能?然而像往常一样跑?这样开发人员可以安心吗?

13 个答案:

答案 0 :(得分:24)

程序中很少有东西是真正新颖的。几乎所有你可能放入代码的东西,其他人都可以自己发明。通常比通过阅读代码来学习它更容易。阅读代码比编写代码更难,大多数程序员都不喜欢这样做。

所以他们更有可能看到你的应用并想“我能做到”,然后“那很酷,我会阅读那些代码,然后复制它!”。即使他们理解,你仍然拥有版权,你仍然首先进入市场。

我建议您忘掉它。

答案 1 :(得分:5)

  一旦有人看了看   代码,他们会非常理解   很容易,他们可以很容易地建立起来   自己。

所以不要给任何人提供源代码。

  

如果我想卖这个产品,那是什么   是多少人的保证   比我更聪明的是逆向工程   整个事情,想出来   更好的产品?

(a)所以现在开始销售现在并占领市场。逆向工程需要时间,在此期间您将捕捉市场和“心灵共享”。 (b)在许可协议中加入禁止逆向工程的规定。 (c)确保所有获得该产品的人签署协议。

  

现在我正在考虑分段   整个代码。添加很多   冗余代码和大量评论。

如果您要分发源代码,那只有一点意义。在这种情况下,甚至没有人需要进行逆向工程。他们有你的源代码。不要给它们。

  

有没有软件......

有很多软件声称可以完成这项工作。然而,它是解决业务问题的技术解决方案。所有软件都可以进行逆向工程,因为在某些时候,所有软件都必须经过解密和去混淆,以达到CPU理解它的程度。那时它基本上是明文。因此,没有正式的技术解决方案可行(缺少类似于防篡改HSM中执行的代码)。

我将补充一点,您可以使用另一种商业机制来抵御商业损失,这就是所谓的:价格。使价格如此之高以至于被许可人将重视其副本而不允许对其进行检查,或使其变得如此之低以至于逆向工程成本不可行;或者让它免费并在支持合同上赚钱。

答案 2 :(得分:3)

一旦您真正掌握了编写此类代码库的知识和经验,您就会清楚地知道,混淆是为了阻止随意的IP侵权行为。

想要了解您的代码的人会知道您的代码。

如果它成为金钱损失的问题,法院就是你的保护。

这就是它的工作原理。

答案 3 :(得分:2)

有人将始终能够理解并制定您的代码。哎呀,如果你有0方式获得代码,即使只是使用系统就足以让某人能够复制这个过程。

示例:我将一壶水倒入杯中,而我的背面朝向另一个人。另一个人知道水和重力是令人敬畏的东西落入其他容器,所以他们可以设计一个提升水壶的过程让重力(API调用)对他们有利。他们可能不知道您在前臂中使用的角度以及您使用的任何超级偷偷摸摸的杯子握持技术,但他们可以复制相同的过程并随着时间的推移对其进行改进。

tl; dr:你无法保护代码。

答案 4 :(得分:2)

要做的事情就是发明更多精彩的东西,而竞争对手是对当前的东西进行逆向工程。它被称为通过创新竞争。

答案 5 :(得分:2)

我不是律师

如果你真的很担心它,那么你愿意在其中投入资金,不要保护你的代码(超出像混淆或加密那样合理的东西),而是专利你的想法和你的艺术。然后,如果某人确实接受了它,对其进行反向工程并根据您的流程制定更好的流程,那么您有法律理由来获取您的资金。

你需要做的事情,包括证明他们接受了你的想法(这并不容易),但如果这是解决世界饥饿和所有人文问题的事情那么要做。

现在对于缺点,我猜,你的方法可能是90%正确:

  1. 由于各种原因不具有可专利性(我对已经获得专利的想法的数量感到惊讶,以及识别原创艺术的难度)
  2. 不是新的,也不是唯一的(即已经确立的艺术品)
  3. 不值得申请专利,因为费用远远超过了利益
  4. 知识产权律师可以肯定地告诉您,咨询的费用并不是那么多。总的来说,与他们协商然后花费大量时间隐藏代码会更便宜。

    祝你好运。

答案 6 :(得分:1)

甚至不打扰。如果你的代码确实“做了很棒的事情”,请确保它会被黑客入侵。只是为了好奇。

答案 7 :(得分:1)

没有100%的方法可以保护您的代码免受逆向工程的影响。我们在说什么语言?如果这是C / C ++那么反向工程就很难了,你可以将它从调试信息等中删除。但如果这是例如Java,那么即使你混淆代码,也有一些非常酷的工具(如{{无论如何,这将揭示你的大部分工作。

尽管如此,我认为你应该试着改变你的态度。大公司为简单的解决方案付出了很多钱,而现在看来服务是最重要的,而不是软件(因此开放软件公司的成功)。所以,如果你有一个好的软件,不要害怕有人可能会窃取它,而是想想如何把它卖得好。

答案 8 :(得分:1)

  

是否有任何软件加密软件代码,这将使调试,故障排除和理解代码如何工作几乎不可能?然而像往常一样跑?这样开发人员可以安心吗?

这是完全错误的心态IMO。如果你被公共汽车撞到会怎么样?你的公司破产了吗?您的所有数据都会在火灾中被摧毁?对于您的每一个客户,他们对您的软件的投资价值将下降,并最终达到零,因为没有您,软件无法进一步开发或麻烦。我已经看到所以浪费了很多钱,我认为这是一个可怕的商业模式。

我自己制作软件赚取了面包,所以我知道用它谋生的艰辛。尽管如此,混淆仍然不是现在的方法。对您的客户施加严格的许可协议,吓跑他们,以便他们甚至不考虑重新分发软件,但保持开放

答案 9 :(得分:0)

这是徒劳的。总有人比你聪明,因此他们能够对你的混淆进行逆向工程。

答案 10 :(得分:0)

通常有足够聪明的人来破解你的代码并以有意义的方式使用它是足够聪明的,可以自己做,并且可能认为他们可以比你做得更好,所以他们不会打扰你的东西。

不要担心能够破解您的代码而不能有意义地使用它的人。如果你做得很好,这只能加强你所做工作的质量(想想所有蹩脚的触摸屏手机模仿者)。

答案 11 :(得分:0)

他们将对您的代码进行逆向工程。没有什么可以阻止他们..你唯一能做的就是让它变得更难。这包括混淆代码,这些代码是继承的“开放”代码,例如PHP和Javascript,一直到乱丢你的代码,带有自我修改的废话。

答案 12 :(得分:0)

在很多方面,我认为,使软件有价值的东西不是它提供的疯狂的技术进步,而是我们认为可能会想到的东西是软件本身的第三方。就像你会在那里支持它一样。或者它是作为Web服务提供的,您将在那里确保服务器正在运行。或者它是一个社区,你将在那里温和地建立社区。

虽然您可能实际上是销售代码,但您的代码所具有的价值并非代码本身固有的,而是源自代码周围的功能和生态系统。