我在这里看到了很多关于复制保护的讨论。我对防倒车和知识产权保护更感兴趣。
有一些解决方案,如 Safenet 和 HASP,声称可以加密二进制文件,但是当与有效密钥一起使用时,这些解决方案是否可以防止反转?
可以使用哪些策略来混淆代码并摆脱逆向者?有没有像样的商业实现?
我知道大多数保护方案都可以被破解,但这里的目标是延迟逆转相关软件的能力,如果另一家公司试图实施这些方法,它会变得更加明目张胆。
我在这里看到了很多关于复制保护的讨论。我对防倒车和知识产权保护更感兴趣。
有一些解决方案,如 Safenet 和 HASP,声称可以加密二进制文件,但是当与有效密钥一起使用时,这些解决方案是否可以防止反转?
可以使用哪些策略来混淆代码并摆脱逆向者?有没有像样的商业实现?
我知道大多数保护方案都可以被破解,但这里的目标是延迟逆转相关软件的能力,如果另一家公司试图实施这些方法,它会变得更加明目张胆。
有一些解决方案,如 Safenet 和 HASP,声称可以加密二进制文件,但是当与有效密钥一起使用时,这些解决方案是否可以防止反转?
不会。专门的逆向工程师可以解密它,因为操作系统必须能够解密它才能运行它。
就个人而言,我不会担心。诚然,我对您的业务一无所知,但在我看来,逆向工程 C++ 与 Java 或 .NET 等语言相比相对困难。这将足以保护除最坚定的攻击者之外的所有攻击者。
然而,一个坚定的攻击者总是能够通过你实现的任何东西,因为在某些时候它必须变成一堆 CPU 指令并执行。你不能阻止他们阅读。
但对于一个不平凡的程序来说,这是一个很大的努力。在我看来,更有可能有人在看到你的程序运行后(或者甚至只是从你的营销材料中)创建了一个竞争对手。这可能比尝试逆向工程更容易,并且避免了任何潜在的法律问题。这不是您可以(或应该)阻止的事情。
雇用一些我多年来共事过的人,他们会完全混淆源代码!
以完全不可能进行逆向工程的方式真正混淆代码几乎是不可能的。
如果有可能,那么计算机病毒将是绝对不可阻挡的,没有人能够知道它们是如何工作的,它们是做什么的。在我们能够运行加密代码之前,加密在某个时刻被解密并“可读”(例如,可以读取机器代码的人),然后才能由 cpu 执行。
现在考虑到这一点,您可以放心地假设廉价的保护将抵御廉价的黑客。像“不好”一样阅读便宜,它与您支付的价格完全无关。伟大的保护将抵御伟大的黑客,但终极保护并不存在。
通常,您的解决方案越商业化,攻击向量就越“知名”。
此外,请注意加密应用程序等内容会带来额外开销并会惹恼用户。USB 加密狗也让用户烦恼,因为他们必须随身携带,而且要花一大笔钱来更换。因此,这也成为您很高兴自己受到保护免受少数黑客攻击和您的所有客户之间的权衡,这些客户将不得不承担您的保护方法所承受的障碍。
这有两个主要领域:
当然,您可以竭尽全力尝试击败/延迟调试器和逆向工程。正如其他人所说,你不会阻止一个坚定的攻击者,期间......一旦你的应用程序被黑客入侵,你可以期望它可以免费在线使用。
您陈述了您想要的保护计划的两个目标:
1)使逆向工程变得困难。2)让它明目张胆地有人在敲诈你。
对于#1,任何混淆器/调试检测器/等方案都会产生至少一些影响。然而,坦率地说,曾经深入研究编译器输出的工程师比例正在减少,这意味着编译后的 C/C++ 代码对许多人来说是混淆了的代码。
对于#2,除非你有一个特定的、受法律保护的算法/过程,否则一旦应用程序被逆向工程,你就会沉没。如果它受到法律保护,您已经发布了受保护的详细信息,那么您想要获得什么?
总的来说,我认为这是一种很难“取胜”的方式,而且你最好在“业务方面”解决这个问题——也就是说,让你的应用成为订阅,或者收取维护/支持费用……但是具体情况显然取决于您的情况。
您需要设置一个限制,以保护您的代码。查看市场以及您为解决方案收取的费用。您永远不会 100% 保护您的产品,因此您应该评估哪种方法可以为您提供最佳保护。在大多数情况下,一个简单的许可证密钥和没有混淆就足够了。
延迟逆向工程只会“延迟”不可避免的事情。您需要关注的是阻止最初尝试违反版权/IP 的行为。“关于”页面上的良好法律条款和条件通知,或粗体版权通知警告,任何对代码进行逆向工程的尝试都将导致通过脊柱的镐...
如果有机会为他们提供一些法律诉讼,大多数人会放弃试图扯掉一些东西。
We use SafeNet and our clients see it as 'official' protection. That in itself is a good deterrent.