C ++知识产权保护/反转

时间:2009-05-26 21:26:40

标签: c++ obfuscation copy-protection

我在这里看到了很多关于复制保护的讨论。我对反转和知识产权保护更感兴趣。

Safenet和HASP等解决方案声称要对二进制文件进行加密,但是当与有效密钥一起使用时,这些解决方案是否可以免受反转?

可以使用哪些策略来混淆代码并摒弃反向器?那里有没有不错的商业实施?

我知道大多数保护方案都可以被破解,但这里的目标是延迟反转有问题的软件的能力,如果另一家公司试图实施这些方法,那就更加明显。

7 个答案:

答案 0 :(得分:7)

  

Safenet和HASP等解决方案声称要对二进制文件进行加密,但是当与有效密钥一起使用时,这些解决方案是否可以免受反转?

没有。专门的逆向工程师可以解密它,因为操作系统必须能够对其进行解密才能运行它。

就个人而言,我不担心。不可否认,我对您的业务一无所知,但在我看来,与Java或.NET等语言相比,逆向工程C ++相对困难。这将足以保护除了最坚决的攻击者以外的所有人。

然而,一个坚定的攻击者总是能够通过你实现的任何东西,因为在某些时候它必须变成一堆CPU指令并执行。你不能阻止他们阅读。

但对于非平凡的计划来说,这是一个很好的很多的努力。在我看到你的程序在行动之后(或者甚至只是从你的营销材料中),有人可能会创建一个竞争对手,这似乎更有可能。这可能比试图逆向工程更容易,并避免任何潜在的法律问题。这不是你可以(或应该)阻止的事情。

答案 1 :(得分:6)

聘请我多年来与之合作的一些人,他们会完全混淆源代码!

答案 2 :(得分:1)

答案 3 :(得分:1)

几乎不可能以完全不可能进行逆向工程的方式对代码进行真正的混淆。

如果有可能,那么计算机病毒将是绝对不可阻挡的,没有人能够知道它们是如何工作的以及它们的作用。在我们能够运行加密代码之前,加密在某些时候被解密并且“可读”(例如,可以读取机器代码的人),然后才能由cpu执行。

现在考虑到这一点,你可以放心地认为廉价的保护将抵御廉价的黑客。阅读便宜,因为“不好”,它与您支付的价格完全无关。很好的保护可以抵御大黑客,但最终的保护并不存在。

通常,您的解决方案越商业化,攻击媒介就越“众所周知”。

另外,请注意加密应用程序之类的东西意味着额外的开销和烦扰用户。 USB加密狗也会惹恼用户,因为他们必须携带它并花费大量资金来取代。因此,如果您对未受到少数黑客和所有客户的保护感到高兴,那么这也将成为您的保护方法所带来的障碍之间的权衡。

答案 4 :(得分:1)

这主要有两个方面:

  1. 混淆 - 通常意味着重命名和剥离符号。有些人也可能通过等效的代码转换重新排列代码。可执行的打包程序通常也采用反调试逻辑。
  2. 较低级别保护 - 这意味着内核或硬件级别编程。在索尼,nProtect,CD / DVD复制保护等rootkit中看到。

答案 5 :(得分:1)

当然,您可以尝试各种巧妙的方法来尝试击败/延迟调试器和逆向工程。正如其他人所说,你不会阻止一个坚定的攻击者,期间......一旦你的应用被黑了,你可以期待它可以免费在线获得。

您说明了您所希望的保护计划的两个目标:

1)难以进行逆向工程。 2)让它变得有些人正在扯掉你。

对于#1,任何混淆器/调试 - 检测器/等方案都至少会产生一些影响。然而,坦率地说,那些曾经深入研究编译器输出的工程师数量的减少意味着编译的C / C ++代码对许多代码进行了模糊处理。

对于#2,除非你有一个特定的,受法律保护的算法/流程,你试图保护,一旦应用程序被逆向工程,你就会陷入困境。如果它受到法律保护,您已经发布了受保护的详细信息,那么您想要获得什么?

一般来说,我认为这是一种“赢”的难题,而且你最好在“业务方面”解决这个问题 - 也就是说,让你的应用程序成为订阅,或收取维护/支持费用。 ..但具体细节显然取决于你的情况。

答案 6 :(得分:1)

您需要设置保护代码的距离限制。看看市场以及您为解决方案收取的费用。您永远不会100%保护您的产品,因此您应该评估哪种方法可以为您提供最佳保护。在大多数情况下,简单的许可证密钥和没有混淆就足够了。

延迟逆向工程只会“延迟”不可避免的。您需要关注的是阻止最初侵犯版权/ IP的企图。关于页面上的良好法律条款和条件通知,或大胆的版权声明,警告任何反向设计代码的尝试都会导致通过脊柱的镐头......

如果有可能会为某些法律行为提供服务,大多数人都会拒绝试图撕掉某些东西。

我们使用SafeNet,我们的客户将其视为“官方”保护。这本身就是一种很好的威慑力。