我在这里看到了很多有关版权保护的讨论。但我更感兴趣的是反向保护和知识产权保护。
有一些解决方案,比如Safenet和HASP声称可以加密二进制文件,但如果使用有效密钥,这些方案是否能够防止反向工程?
有哪些策略可以用来混淆代码并使反向工程变得困难?是否有任何商业实现方案呢?
我知道大多数保护方案都可能被破解,但目标是延迟对软件进行反向工程的能力,并使其更加明显,如果另一个公司试图实施这些方法。
我在这里看到了很多有关版权保护的讨论。但我更感兴趣的是反向保护和知识产权保护。
有一些解决方案,比如Safenet和HASP声称可以加密二进制文件,但如果使用有效密钥,这些方案是否能够防止反向工程?
有哪些策略可以用来混淆代码并使反向工程变得困难?是否有任何商业实现方案呢?
我知道大多数保护方案都可能被破解,但目标是延迟对软件进行反向工程的能力,并使其更加明显,如果另一个公司试图实施这些方法。
我曾经与一些人共事过,如果你雇用他们,他们会彻底混淆源代码!
你需要设定一个保护代码的限度。看看市场和你的解决方案收费情况。你永远无法百分之百地保护你的产品,因此你应该评估哪种方法会给你最好的保护。在大多数情况下,一个简单的许可证密钥和没有混淆就足够了。
延迟反向工程只会“延迟”不可避免的结果。你需要关注的是阻止初次侵犯版权/知识产权的尝试。在关于页面上放置一个良好的法律条款和条件声明,或者加粗的版权声明警告任何试图反向工程代码的行为将导致一根十字镐穿过脊柱……
如果有可能他们会被起诉,大多数人会放弃尝试窃取东西。
我们使用SafeNet,我们的客户认为这是“官方”的保护。这本身就是一个很好的威慑。
在编程中,要完全混淆代码以至于无法逆向工程化几乎是不可能的。
如果这是可能的话,那么电脑病毒将会变得绝对不可阻挡,没有人能够知道它们是如何运作和执行的。直到我们能够运行加密代码,加密才会在某个点被解密并且变得“可读”(也就是说,可以读懂机器码),然后才能由CPU执行。
现在考虑到这一点,你可以安全地假设廉价的保护措施可以抵御普通的黑客攻击。所谓廉价,并不是指价格,而是指保护措施本身的效果不够好。优秀的保护措施可以抵御高级的黑客攻击,但终极保护并不存在。
通常来说,你的解决方案越商业化,攻击向量就越“众所周知”。
此外,请注意像加密应用程序这样的东西意味着额外的开销和用户的不便。USB加密锁也会让用户感到困扰,因为他们必须随身携带它,并且替换成本也很高。因此,你必须在保护措施的效果和用户体验之间进行权衡。
这个问题主要有两个方面:
当然,你可以采取各种巧妙的手段来试图打败/延迟调试器和逆向工程。正如其他人所说,你不会阻止一个决心坚定的攻击者……一旦你的应用程序被黑客攻破,你可以预期它将免费在线上提供。
你陈述了你所期望的保护方案的两个目标:
1)使逆向工程变得困难。 2)让某人明目张胆地抄袭你。
对于第一点,任何混淆器/调试检测器等方案都会产生至少一些影响。但是,老实说,越来越少的工程师曾经深入研究过编译器输出,这意味着对于许多人来说,编译后的C/C++代码就是混淆代码。
对于第二点,除非你有一个特定且受法律保护的算法/流程需要保护,否则一旦应用程序被逆向工程,你就完蛋了。如果它受到法律保护,那么你已经发布了受保护的细节,那么你想获得什么?
总的来说,我认为这是一种“赢”的困难方式,你最好在“业务方面”解决这个问题——也就是说,让你的应用程序成为一个订阅服务,或者收取维护/支持费用……但具体情况显然取决于你的情况。