是否无法保护.net代码(知识产权)?

时间:2010-03-30 23:54:57

标签: .net code-security

我曾经在JavaScript中工作很多,而且真正困扰我的雇主的一件事是源代码太容易被窃取了。即使有混淆,也没有什么真正帮助,因为我们都知道任何有能力的开发人员如果愿意,都能够阅读该代码。

JS Scripts是一回事,但是那些在IP(知识产权)上投入了数百万美元的SOA项目呢。我喜欢.net,尤其是C#,但我最近又回答了这个问题:“如果我们将这个编译好的程序交给我们的客户,他们的开发人员可以对其进行逆向工程吗?”我已经不遗余力地对代码进行模糊处理,但我知道对于另一位坚定的C#开发人员来说,获取代码并不需要那么多。

所以我认真地提出了这个问题,是否无法保护.net代码?

我的考虑因素如下:

  1. 即使是常规的本机可执行文件也可以反转,但并非每个开发人员都具备能够执行此操作的技能。拆解本机可执行文件要比.net程序集更难。
  2. 混淆只会让你到目前为止,但它确实有所帮助。
  3. 为什么我从未见过微软公开承认用.net写的任何东西都会受到相对容易的IP盗窃?为什么我从未在任何Microsoft网站上看​​到过一些反措施培训?为什么VS带有社区混淆器作为可选组件?好吧也许我刚刚在这里度过了难关,但在大多数开发人员优先列表中并不是很高。
  4. 是否有计划在任何未来的.net版本中解决我的问题?
  5. 我不是在敲网。但是我想要一些现实的答案,谢谢你,标记为主观和社区的问题!

2 个答案:

答案 0 :(得分:10)

所有代码都可以进行逆向工程。

.NET降低了这个标准(只需尝试Reflector!),但混淆再次将其重新提升。一个好的混淆器会提高标准,以防止除了一个非常敬业,有动力的人以外的所有人对你的代码进行逆向工程。

话虽如此,我个人更喜欢专注于质量。我运行一个小型ISV,我们使用.NET - 混淆是很重要的,但如果你能提供高质量的产品,那么如果有人试图对你的代码进行反向工程,这并不重要。

甚至假设,如果他们能够通过一个复杂的项目对所有事情进行逆向工程,那么他们在实际上在市场上提供具有竞争优势的东西时会落后多年......

答案 1 :(得分:1)

任何代码都可以进行逆向工程。是的,它在.NET或Java中比在高度优化的C ++中更容易,但比在Javascript或PHP中更少。混淆在很大程度上减少了漏洞,但实际情况是,一旦确定的逆向工程师会在代码掌握之后找到你的秘密,无论你做了什么来隐藏它。你所做的一切充其量只是让他更加讨厌。

良好的混淆工具将阻止其专业知识开始和结束于Reflector的临时程序员真正了解代码的工作原理。除此之外,你所做的任何事情都是无望的。

我不认为这种情况会在不久的将来随时发生变化,因为.NET的功能使反向工程变得如此容易,这些功能可以实现框架中强大的反射和动态。