Dotfuscator Community Edition有多好? 什么是“足够好的混淆器”?

我打算发布一个小的,低价的公用事业。 由于这比业务更爱好,我打算使用VS2008附带的Dotfuscator Community Edition。

它有多好?

我还可以使用“足够好的混淆器”的定义 – Dotfuscator Community Edition中缺less哪些function以使其足够好。

编辑:

我检查了一些商业混淆器的价格,他们花了很多钱。 这值得么?

商业版本是否更好地保护逆向工程?

我不是很害怕我的应用程序被破解(如果应用程序如此糟糕以致没有人有兴趣破解它,那将是令人失望的)。 无论如何,它并没有得到很好的保护,在代码中几乎没有过分复杂的序列密钥和许可证检查。 这简直让我感到困惑,因为没有模糊的东西,有人可以很容易地获得源代码,重新标记并将其作为自己的代码销售。

这是否发生了很多?

编辑2:

有人可以推荐商用混淆器吗? 我发现他们很多,他们都是昂贵的,有些甚至没有在网站上列出的价格。

从function上看,所有产品看起来都差不多。

混淆器应具有哪些最小特性?

简而言之,Dotfuscator Community Edition和其他“专业”版本之间的主要区别在于,Community Edition只会真正混淆和更改您的类名称,方法名称和其他“公共”可访问的方面。 它不会深入到函数本身并混淆函数中的“私有”代码。

此外,Community Edition不会在应用程序中对控制stream进行混淆,也不会将来自多个程序集的代码“合并”为一个程序集。 这些function在“专业”付费版本中可用。

社区版(Visual Studio附带的“免费”版本)和“专业”付费版本之间的最佳对比可以通过查看以下两个链接find:

抢先Dotfuscator版本的比较

Dotfuscator社区版3.0在MSDN上

但是,MSDN链接略有过时,可以更好地解释Dotfuscator各种版本中可用的实际function。

编辑:

商业混淆器确实花了很多钱,而且他们值多less钱? 那么,这是一个真正的只有你能做的判断。 就个人而言,我认为在你的情况下这是不值得的。 首先,因为你只是想保护一个应用程序(“我打算发布一个小的,低价位的工具”),其次,你说你不是太在意应用程序被“破解”(“我”我不是很害怕我的应用程序被破解“)。

我明白,如何编译.NET应用程序而没有任何困惑,可以很容易地将其逆向工程化为原始源代码,并且有人可能会利用这个来窃取你的软件并将其作为自己的软件出售,但是,事实上,软件盗版确实存在,你可能永远不会停止。

试图阻止软件盗版一直在这里(堆栈溢出)和互联网上辩论和辩论。

普遍的共识似乎是,你需要把时间和精力放在让你的产品尽可能好的时候,而不是用同样的时间来试图保护一些东西,如果有足够的时间/金钱,“攻击者”可以“破解“/窃取你的软件,尽pipe你尽最大努力阻止他这样做。

这是否发生了很多?

我会说这可能比你想象的要less得多。 当然,软件会被破解,但是我不认为太多的人真正窃取了其他的源代码,并且将其彻底重新命名为自己的产品。 我不是说没有,也没有发生过,但这绝对不是一个普遍的现象。

总而言之,我认为最好的办法就是专注于使您的工具尽可能地出色,并使用免费的Dotfuscator混淆器,因为它只需要很less的时间/金钱投入,就可以最大限度地混淆您的代码明显的窥视眼睛,但不要因为如果有人想破解/窃取你的产品/代码足够糟糕的事实而失眠。

我认为随Visual Studio提供的Dotfuscator Community Edition是一个非常天真的解决scheme。 它只提供符号重命名,并不会混淆控制stream。 如果有人决定偷取你的代码,只需要重构所有的名字,这很容易,less量的类。

你也可以依靠reflection器提供的不完美的反编译(它通常会扰乱开关块,产生大量的gotos,不匹配的if-else块等)。

但我build议你尝试Eziriz .NET反应堆 。 它只需要179美元(AFAIK最佳价格/function比)。 它提供标准的混淆技术,如符号重命名,stringencryption,控制stream混淆。 作为一个很好的奖励,它为您的应用程序创build本地启动器,它将包含您的主要程序集和所有encryption和加载的第三方引用。 另外它提供了一些许可function。

无论如何,颠倒.NET应用程序并不是那么难,我只是为了好玩而做的,可以说这只是时间和金钱的问题(当然也是常识)你的应用程序被破解或颠倒的速度。

至less,混淆器应该有:

  1. stringencryption
  2. 符号重命名
  3. 控制stream混淆

好有function是:

  1. 资源保护
  2. 汇编合并/embedded
  3. 外部方法调用隐藏
  4. 能够自动签名混淆程序集
  5. 支持卫星组件
  6. 死码消除
  7. 元数据减less
  8. 反编译器(reflection器)
  9. 防篡改
  10. 反debugging

看看我们的Crypto Obfuscator产品,它支持所有这些。

另一种解决反向工程代码的方法是在你放置你的dll的地方,如果你真的不能买得起支持的混淆器。 在部署之前,在你的集合中告诉编译器在哪里寻找它们,这是一个阻碍逆向工程的古老做法。 但正如已经说过的,主要集中在开发一个优秀的产品和良好的编码实践,那么将来你将能够买得起一个好的混淆器应用程序。 此外,尽量不要担心其他人破解你的代码,因为大多数黑客破解代码只是find一种方式来使用产品而不付钱,而不是窃取代码或从开始的程序员学习。 是的,我希望JIT只支持c#和vb.net这将真正减less逆向工程,但由于jit可以读取很多由于.net是真正的语言友好,这是价格。 所以,编码,赚一些钱,买一些额外的证券。