逆向工程.net混淆代码有多容易?

时间:2009-09-28 19:22:53

标签: .net

市场上有一些程序可以用来混淆你的.net代码,我的问题是,如果你的代码“被称为”混淆,那么有人可以轻松获取你的IP。

混淆.net代码只是橡胶鸡安全吗?或者它是否足以真正保护您的知识产权?

6 个答案:

答案 0 :(得分:12)

混淆就像门锁......它让诚实的人保持诚实。

答案 1 :(得分:8)

这完全取决于混淆器。

一般来说,混淆可以很好地使逆向工程变得更加困难 - 但它并没有以任何方式阻止它。 CLR将始终需要破译混淆的IL,因此专门的人员总是可以这样做。

但是,大多数软件许可和保护确实做了两件事:

  • 防止意外过度使用
  • 防止偶然企图绕过许可

混淆(与适当的许可方案相结合)可以非常有效地防止上述两种情况。它将一个简单的过程改为一个更复杂的任务。

答案 2 :(得分:6)

不同的混淆器提供不同级别的保护。

如果你确实有人确定要弄清楚你的代码在做什么,那么一些免费的代码混淆很容易破解。

另一方面,企业级混淆几乎不可能用他们使用的所有不同混淆方法来解密。

......最后,真正想要你的代码的人将能够在时间和决心的基础上找到答案。

答案 3 :(得分:4)

绝不应混淆混淆安全性。

.NET Reflector使得对大多数.NET代码进行逆向工程变得非常简单。您可能无法获得相当多的变量和方法/方法参数名称,但任何对您的知识产权进行逆向工程感兴趣的人都会有足够的信息来这样做。

如果您需要严格保护您的知识产权,请考虑使用代码的关键部分,并仅将其作为Web服务公开。或者,考虑像HASP这样的工具,为您的产品添加一定程度的加密和反调试/逆向工程保护。

如果这些都不可能......考虑聘请一些优秀的律师。

答案 4 :(得分:1)

没有什么比保护知识产权更好了。如果某人真的希望对您的应用进行逆向工程,他们就可以做到。

最好的办法是在代码中加入一些版权声明。混淆会有所帮助,因为你必须付出一些努力进行逆向工程,这意味着大多数人都不会花时间去做。

另一个步骤可能是JIT编译它。

如果您正在创建公共API,请确保您对公共方法有一些很棒的xml注释,或者甚至更好,不要在那里混淆参数:)

答案 5 :(得分:1)

对于任何决定获取你的IP的人来说都很容易。

就“安全性”而言,通过默默无闻的安全性比没有安全性(这实际上比安全性更差)更安全。

我的规则一直是:保持诚实的人诚实。确保您的知识产权受到专利申请的法律保护,并让律师起草合格的使用条款/ EULA。使用一个像样的混淆器来防止偶然的蠢事,但要意识到这不是一次性解决方案。

不幸的是,如果某人决定对您的代码进行反向工程,他们就可以做到,并且他们会这样做。