我曾经在JavaScript中工作很多,而且真正困扰我的雇主的一件事是源代码太容易被窃取了。即使有混淆,也没有什么真正帮助,因为我们都知道任何有能力的开发人员如果愿意,都能够阅读该代码。
JS Scripts是一回事,但是那些在IP(知识产权)上投入了数百万美元的SOA项目呢。我喜欢.net,尤其是C#,但我最近又回答了这个问题:“如果我们将这个编译好的程序交给我们的客户,他们的开发人员可以对其进行逆向工程吗?”我已经不遗余力地对代码进行模糊处理,但我知道对于另一位坚定的C#开发人员来说,获取代码并不需要那么多。
所以我认真地提出了这个问题,是否无法保护.net代码?
我的考虑因素如下:
我不是在敲网。但是我想要一些现实的答案,谢谢你,标记为主观和社区的问题!
答案 0 :(得分:10)
所有代码都可以进行逆向工程。
.NET降低了这个标准(只需尝试Reflector!),但混淆再次将其重新提升。一个好的混淆器会提高标准,以防止除了一个非常敬业,有动力的人以外的所有人对你的代码进行逆向工程。
话虽如此,我个人更喜欢专注于质量。我运行一个小型ISV,我们使用.NET - 混淆是很重要的,但如果你能提供高质量的产品,那么如果有人试图对你的代码进行反向工程,这并不重要。
甚至假设,如果他们能够通过一个复杂的项目对所有事情进行逆向工程,那么他们在实际上在市场上提供具有竞争优势的东西时会落后多年......
答案 1 :(得分:1)
任何代码都可以进行逆向工程。是的,它在.NET或Java中比在高度优化的C ++中更容易,但比在Javascript或PHP中更少。混淆在很大程度上减少了漏洞,但实际情况是,一旦确定的逆向工程师会在代码掌握之后找到你的秘密,无论你做了什么来隐藏它。你所做的一切充其量只是让他更加讨厌。
良好的混淆工具将阻止其专业知识开始和结束于Reflector的临时程序员真正了解代码的工作原理。除此之外,你所做的任何事情都是无望的。
我不认为这种情况会在不久的将来随时发生变化,因为.NET的功能使反向工程变得如此容易,这些功能可以实现框架中强大的反射和动态。