csm*_*mba 157 .net security obfuscation
我的产品有几个组件:ASP.NET,Windows Forms App和Windows Service.95%左右的代码是用VB.NET编写的.
出于知识产权的原因,我需要对代码进行模糊处理,直到现在我一直在使用现已超过5年的dotfuscator版本.我认为现在是时候转向新一代工具了.我正在寻找的是在搜索新的混淆器时我应该考虑的一系列要求.
我知道到目前为止我应该寻找的东西:
Jud*_*ngo 50
我们尝试了很多混淆器.它们都不适用于使用远程处理的大型客户端/服务器应用程序.问题是客户端和服务器共享一些dll,我们还没有发现任何可以处理它的混淆器.
我们尝试过DotFuscator Pro,SmartAssembly,XenoCode,Salamander以及一些名字让我失望的小型应用程序.
坦率地说,我确信混淆是一个很大的问题.
即使它解决的问题也不完全是一个真正的问题.您真正需要保护的唯一事情是连接字符串,激活码,安全敏感的东西.另一家公司打算对你的整个代码库进行逆向工程并从中创建一个竞争产品,这是一个荒谬的经理人的噩梦,而不是现实.
Mic*_*ann 43
我现在正在'膝盖深',试图找到一个好的解决方案.到目前为止,这是我的印象.
Xenocode - 我有一个Xenocode2005的旧许可证,我曾经用它来混淆我的.net 2.0程序集.它在XP上运行良好,是一个不错的解决方案.我目前的项目是.net 3.5,我在Vista上,支持告诉我试一试,但2005版本甚至不能在Vista上运行(崩溃)所以我现在必须以高斯价格购买'PostBuild2008' 1900美元 这可能是一个很好的工具,但我不会发现.太贵了.
Reactor.Net - 这是一个更具吸引力的价格点,它在我的Standalone Executeable上运行良好.许可模块也很好,本来可以省去一大堆努力.遗憾的是,它缺少一个关键功能,即能够从混淆中排除内容.这使得无法实现我需要的结果(将多个程序集合并在一起,混淆一些,而不是混淆其他程序集).
SmartAssembly - 我为此下载了Eval,它运行完美.我能够实现我想要的一切,界面是一流的.价格点仍然有点沉重.
Dotfuscator Pro - 无法在网站上找到价格.目前正在讨论中获取报价.听起来不祥.
Confuser - 一个非常好的开源项目(混淆ppl,顾名思义).https://confuser.codeplex.com/
(由jgauffin添加)
注意:据报道,根据GitHub回购中的问题#498,ConfuserEx被"破坏" .
Kei*_*ith 42
回到.Net 1.1混淆是必不可少的:反编译代码很简单,你可以从汇编,到IL,到C#代码,并且只需很少的努力就可以再次编译.
现在使用.Net 3.5我完全不确定.尝试反编译3.5程序集; 你得到的是编译还有很长的路要走.
添加3.5中的优化(远远优于1.1)以及反射处理匿名类型,委托等的方式(它们是重新编译的噩梦).添加lambda表达式,编译器'magic'就像Linq-syntax一样var,和C#2函数一样yield(导致新类具有不可读的名称).您的反编译代码最终会在可编译的情况下走很长一段路.
拥有大量时间的专业团队仍然可以对其进行反向工程,但对于任何混淆的代码都是如此.他们从中得到的代码是不可维护的,很可能是非常错误的.
我建议对你的程序集进行密钥签名(这意味着如果黑客可以重新编译他们必须重新编译所有程序集),但我不认为混淆是值得的.
Sam*_*Sam 23
如果您正在寻找一个免费的,您可以尝试Visual Studio或Eazfuscator.NET附带的DotObfuscator社区版.
自2012年6月29日起,Eazfuscator.NET现已商业化.最后一个免费版本是3.3.
Sha*_*awn 18
我一直在使用smartassembly.基本上,你选择一个DLL并返回它混淆.它似乎工作正常,到目前为止我没有遇到任何问题.非常非常容易使用.
And*_*ers 10
我在市场上尝试过几乎所有的混淆器,SmartAssembly在我看来是最好的.
我也一直在使用SmartAssembly.我发现Ezrinz .Net Reactor对我的.net应用程序更好.它混淆,支持Mono,合并程序集,它还有一个非常好的许可模块来创建试用版或将许可证链接到特定的机器(非常容易实现).价格也非常具有竞争力,当我需要快速支持时. Eziriz
为了清楚起见,我只是一个喜欢该产品而不是与公司有任何关系的客户.
简短的回答是,你做不到.
有各种各样的工具可以让人们更难阅读你的代码 - 其中一些已被其他答案指出.
然而,所有这些都使得阅读更加困难 - 它们增加了所需的工作量,就是这样.通常这足以阻止随意的读者,但是那些决心深入挖掘代码的人总是能够这样做.
我们有一个多层应用程序,带有asp.net和winform接口,也支持远程处理.我使用任何混淆器都没有问题,除了加密类型,它会生成一个加载器,这种加载器在各种意想不到的方面都有问题,在我看来根本不值得.实际上我的建议更像是"避免像瘟疫那样加密装载机类型的混淆器".:)
根据我的经验,任何混淆器都可以在.net的任何方面工作,包括asp.net和远程处理,你只需要与设置密切相关,并了解你可以在代码的哪些区域推动它.并花时间尝试对所获得的内容进行逆向工程,并了解它如何与各种设置一起工作.
多年来我们在商业应用程序中使用了几个并且从9rays.net找到了Spices混淆器,因为价格合适,它完成了工作并得到了很好的支持,尽管我们实际上已经不再需要这些支持但是说实话我不认为你使用哪个混淆器真的很重要,如果你想让它与远程处理和asp.net一起工作,问题和学习曲线都是一样的.
正如其他人提到的那样,你真正做的就是相当于一个挂锁,保持其他人诚实,或者更难以简单地重新编译应用程序.
许可通常是大多数人的关键领域,无论如何,您肯定应该使用某种数字签名的证书系统进行许可.如果您没有智能系统,那么您最大的损失将来自临时共享许可证,打破许可证制度的人员从来都不会购买.
这样做太容易了,对您的客户和您的业务产生负面影响,做一些简单合理的事情,然后不用担心.
在过去的两天里,我一直在尝试使用Dotfuscator Community Edition高级版(在注册Visual Studio捆绑的基本CE之后免费下载).
我认为更多人不使用混淆作为默认选项的原因是,与风险相比,这是一个严重的麻烦.在较小的测试项目中,我可以通过大量的努力来运行混淆的代码.通过ClickOnce部署一个简单的项目很麻烦,但是在用mage手动签署清单之后可以实现.唯一的问题是,在出错时,堆栈跟踪会被混淆,并且CE没有打包出去混淆器或澄清器.
我试图混淆一个真正的项目,这是一个基于Excel的VSTO,Virtual Earth集成,大量的webservice调用和一个IOC容器和很多反射.这是不可能的.
如果混淆确实是一个关键要求,那么您应该从一开始就设计应用程序,在进度时测试混淆的构建.否则,如果这是一个相当复杂的项目,你最终会遭受严重的痛苦.
Crypto Obfuscator解决您的所有问题和场景.它:
| 归档时间: |
|
| 查看次数: |
133149 次 |
| 最近记录: |