我的产品有几个组件: ASP.NET、Windows和Windows。95%左右的代码是用VB.NET编写的。
由于知识产权的原因,我需要混淆代码,直到现在,我一直在使用一个版本的dotfuscator,现在已经超过5年了。我在想,是时候转向新一代的工具了。我正在寻找的是一个列表的要求,我应该考虑,当我搜索一个新的混淆器。
我知道到目前为止我应该找的是:
发布于 2008-08-12 12:19:13
回到.Net 1.1中,混淆是非常重要的:反编译代码很容易,您可以从程序集到IL,再到C#代码,然后用很少的努力就可以再次编译它。
现在使用.Net 3.5,我一点也不确定。尝试对3.5程序集进行反编译;您所得到的离编译还有很长的路要走。
添加3.5中的优化(远远优于1.1),以及反射处理匿名类型、委托等的方式(它们是重新编译的噩梦)。添加lambda表达式、编译器‘魔术’(如Linq语法和var
)和C#2函数(如yield
(这会导致新的类具有不可读的名称)。您的反编译代码最终离可编译还有很长的路要走。
一个拥有大量时间的专业团队仍然可以再次将其反向工程,但是对于任何混淆的代码也是如此。他们从中得到的代码将是不可维护的,并且很可能是非常错误的。
我建议对您的程序集进行密钥签名(也就是说,如果黑客能够重新编译一个程序集,他们必须重新编译所有程序集),但我认为混淆是不值得的。
发布于 2008-08-07 18:15:46
我们已经尝试过一些模糊处理方法。它们中没有一个在使用远程处理的大型客户机/服务器应用程序上工作。问题是客户机和服务器共享一些dll,而且我们还没有找到任何能够处理它的混淆器。
我们已经尝试过DotFuscator Pro、SmartAssembly、XenoCode、Salamander,以及一些我不知道名字的小时间应用程序。
坦率地说,我相信混淆是一次大的攻击。
甚至它所处理的问题也不是一个真正的问题。你真正需要保护的是连接字符串,激活代码,安全敏感的东西。这种胡说八道的说法是,另一家公司将对你的整个代码库进行反向设计,并从中创造出一种竞争产品,这是一位偏执狂经理的噩梦,而不是现实。
发布于 2009-05-11 06:04:41
我现在在“膝盖深处”,试图找到一个好的解决方案。这是我到目前为止的印象。
Xenocode -我有一个旧的Xenocode2005许可证,用来混淆我的.net 2.0程序集。它在XP上运行良好,是一个不错的解决方案。我目前的项目是.net 3.5,我在Vista上,支持让我试一试,但是2005年版本甚至不能在Vista (崩溃)上工作,所以我和现在我不得不以1900美元的高价购买'PostBuild2008‘。这可能是一个很好的工具,但我不会发现。太贵了。
Reactor.Net --这是一个更有吸引力的价格点,在我的独立可执行项目上效果很好。许可模块也很好,可以帮我节省很多精力。不幸的是,它缺少了一个关键的特性,那就是从混淆中排除东西的能力。这使得我不可能达到我所需要的结果(合并多个程序集,混淆一些,而不是混淆其他程序集)。
SmartAssembly --我为此下载了Eval,它运行得完美无缺。我能够实现我想要的一切,接口是一流的。价格点仍然有点高。
Dotfuscator -无法在网站上找到价格。目前正在讨论中,以获得报价。听起来不祥。
Confuser --一个运行良好的开源项目(顾名思义,混淆ppl )。
注:据报道,ConfuserEx是“坏的”,根据第498期在他们的GitHub回购。
https://stackoverflow.com/questions/2525
复制相似问题