58

我计划发布一个小型、低价的实用程序。由于这更像是爱好而不是商业,因此我计划使用 VS2008 附带的 Dotfuscator Community Edition。

它有多好?

我还可以使用“足够好的混淆器”的定义——Dotfuscator 社区版缺少哪些功能以使其足够好。

编辑:

我检查了商业混淆器数量的定价,它们花费了很多。这值得么?

商业版本是否能更好地防止逆向工程?

我不是很害怕我的应用程序被破解(如果应用程序太糟糕以至于没有人有兴趣破解它,那将是令人失望的)。无论如何,它并没有受到严格的保护,也没有在代码中的几个地方进行过于复杂的序列密钥和许可证检查。它只是让我感到困扰,没有混淆,有人可以轻松获得源代码,重新命名并将其作为自己的出售。

这种情况经常发生吗?

编辑2:

有人可以推荐商业混淆器。我找到了很多,它们都很贵,有些甚至没有在网站上列出价格。

功能方面,所有产品似乎或多或少相似。

混淆器应该具有的最小功能集是什么?

4

4 回答 4

51

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

此外,Community Edition 不会对应用程序中的控制流等内容进行混淆处理,也不会将来自多个程序集的代码“组合”到一个程序集中。这些是“专业”付费版本中可用的功能。

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

抢先式 Dotfuscator 版本比较

MSDN 上的 Dotfuscator 社区版 3.0

MSDN 链接有点过时,但是,它对 Dotfuscator 的各个版本中可用的实际功能提供了更好的解释。

编辑:

商业混淆器确实要花很多钱,至于它们是否物有所值?嗯,这是一个只有你才能做出的判断。就个人而言,我会说在您的情况下不值得。首先,因为您只想保护一个应用程序(“我计划发布一个小型、低价实用程序。”),其次,您说您不太担心应用程序被“破解”(“我”我不太害怕我的应用程序被破解。”)。

我知道编译的 .NET 应用程序可以很容易地逆向工程到其原始源代码,并且有人可能会利用它来窃取您的软件并将其作为自己的软件出售,这会如何困扰您。事实上,软件盗版确实存在,你可能永远不会阻止它。

试图阻止软件盗版在此处(Stack Overflow)和整个互联网上都引起了激烈的争论。

普遍的共识似乎是,您需要将时间和精力更多地集中在使您的产品尽可能出色上,而不是利用同一时间试图保护某些东西,只要有足够的时间/金钱,“攻击者”就可以“破解”/窃取您的软件,尽管您已尽最大努力阻止他这样做。

这种情况经常发生吗?

我会说它的发生可能比你想象的要少得多。当然,软件会被破解,但我认为实际上并没有太多人窃取他人的源代码并完全重新命名它以作为自己的出售。我并不是说它没有发生,或者没有发生,但这肯定不是常见的情况。

总而言之,我想说你最好的选择是专注于让你的实用程序尽可能好,并使用免费的 Dotfuscator 混淆器,因为它只需要很少的时间/金钱投资,就可以从最明显的窥探,但不要因为如果有人想破解/窃取您的产品/代码足够严重,他们会这样做的事实而睡不着觉。

于 2010-01-08T19:43:36.387 回答
13

我认为 Visual Studio 附带的 Dotfuscator Community Edition 是一个非常幼稚的解决方案。它只提供符号重命名,根本不混淆控制流。如果有人决定窃取您的代码,它只需要重构所有名称,这对于少量的类来说非常容易。

你也可以依赖 Reflector 提供的不那么完美的反编译(它通常会弄乱 switch 块,产生很多 goto,不匹配 if-else 块等)。

但我建议你试试Eziriz .NET Reactor。它只需 179 美元(AFAIK 最佳价格/功能比)。它提供了标准的混淆技术,例如符号重命名、字符串加密、控制流混淆。作为一个很好的奖励,它为您的应用程序创建了本机启动器,其中将包含您的主程序集和所有第三方引用加密并按需加载。此外,它还提供了一些许可功能。

无论如何,逆向 .NET 应用程序并不难,我这样做是为了好玩,并且可以说破解或逆向应用程序的速度只是时间和金钱的问题(当然还有常识)。

于 2010-02-11T09:12:37.073 回答
9

至少,混淆器应具有:

  1. 字符串加密
  2. 符号重命名
  3. 控制流混淆

好的功能是:

  1. 资源保护
  2. 装配合并/嵌入
  3. 外部方法调用隐藏
  4. 自动签署混淆程序集的能力
  5. 支持附属程序集
  6. 死码消除
  7. 元数据缩减
  8. 反反编译器(反射器)
  9. 防篡改
  10. 反调试

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

于 2010-05-18T05:34:31.483 回答
5

Another way to get around reverse engineering code is where you place your dll's if you cannot really afford obfuscators which do add support. And in your assembies before deployment tell the compiler where to look for them which was an old practice to hinder reverse engineering. But like it was already said, concentrate mostly on developing an excellent product and good coding practices, then you will be able to afford a nice obfuscator application in the future. Also, try not to worry to much about others cracking your code because most hackers crack code just find a way to use the product without paying for it and not to steal code or to learn from for beginning programmer. Yeah, I wish JIT only supported c# and vb.net which would have really cut down on reverse engineering but since jit can read many due to .net being really language friendly that is the price. So code away and make some money, buy some additional securities.

于 2010-06-11T03:09:31.567 回答