是否可以防止.NET MSIL DLL的反编译?

Thu*_*der 4 .net security decompiling

几乎所有.net程序集都可以使用Reflection进行解编译.这意味着所有.net产品都是开源的,因为代码可以很容易地被其他开发人员使用.没有办法让我们可以加密代码(至少对某些安全逻辑来说),这样就不会轻易破解或误用.

编辑

老问题winforms .net真的等于开源吗? 编辑时考虑了有关正确使用" 开源 "一词的评论

Mic*_*ray 10

有些工具可以加密.NET程序集,防止使用Reflector和类似工具进行反编译.他们还执行许多相关服务,如混淆,嵌入资源的保护等.我知道的两个:

RemoteSoft Salamander套件
XHEO DeployLX


Aid*_*ell 9

没有

所有代码都可以进行逆向工程,复制,克隆,重用,重新链接等.什么开源的意思是,这是法律意义上的自由,从限制,使人们可以了解从代码.这也意味着技术可以发展,可以创造更强大的长期技术经济,而不是短期主义.阅读"大教堂和市集"是有偏见但相关的观点.

我不知道一种足够强大的代码保护方法,它不仅仅是高度混淆,而且只是通过默默无闻的安全性.只有你的问题说,你需要知道更多关于你问的话题阅读和研究 的技术,合理的和可能的问题的意图的哲学气质.

编辑:我支持我的原则,即使使用"开源"一词被撤回.

  • 是的,我觉得有点苛刻......我认为OP滥用了这个词,但这不是他的问题.他正试图找到一种方法来阻止他人看到他写的代码.请参阅我的答案,了解一些真正保护MSIL免于反编译的程序. (2认同)

Jul*_*iet 6

没有办法让我们可以加密代码(至少对某些安全逻辑来说),这样就不会轻易破解或误用.

其他人已触及代码混淆器,但问问自己你真正想要实现的目标:

  • 您是否想让您的代码更"安全"?通过默默无闻的安全性不仅是一种相对较弱的策略,您也不应该将敏感数据放入源代码中!将密码,连接字符串等移出代码并转移到配置文件中.

    据推测,只要没有人可以访问您的物理机,应用程序就是安全的.你可以假设如果攻击者拥有物理机器,那么所有的希望都会消失.

  • 您是否在尝试保护专有算法?如果您不想花钱获得专利,那么最好的尝试和真正的策略是通过您控制的服务器上的Web服务公开您的API.该应用程序调用Web服务 - 意味着性能下降,并且您依赖于具有Internet连接的用户,但至少您的代码绝对安全.

  • 您是否试图阻止用户盗版软件?有关许可证密钥系统的SO上有很多帖子.