.net - Dotfuscator 社区版有多好? "good enough obfuscator"是什么?

标签 .net obfuscation piracy dotfuscator piracy-prevention

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

有多好?

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

编辑:

我检查了一些商业混淆器的定价,它们的价格很高。这值得么?

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

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

这种情况经常发生吗?

编辑2:

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

就功能而言,所有产品似乎都或多或少相似。

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

最佳答案

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

此外,社区版不会做任何事情来混淆应用程序中的控制流等内容,也不会将多个程序集中的代码“组合”到一个程序集中。这些是“专业”付费版本中提供的功能。

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

Preemptive Dotfuscator Editions Comparison

Dotfuscator Community Edition 3.0 on MSDN

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

编辑:

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

我知道编译 .NET 应用程序时,无需任何混淆,可以轻松地对其原始源代码进行逆向工程,并且有人可能会利用它来窃取您的软件并将其作为自己的软件出售,这会如何让您感到困扰,然而,事实是软件盗版确实存在,而且您可能永远无法阻止它。

试图阻止软件盗版已经在这里(Stack Overflow)和整个互联网上引起了令人作呕的争论。

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

Does this happens a lot?

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

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

关于.net - Dotfuscator 社区版有多好? "good enough obfuscator"是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2030136/

相关文章:

c# - 如何将属性从一种类型转换为另一种类型?

php - 如何摆脱主题窃取者?

.net - 分发任何软件评估版的最佳方式?

android - 我应该如何编码来抵抗 "one-click piracy"?

.net - 在 Visual Studio 2010 中,为什么要创建 .NETFramework,Version=v4.0.AssemblyAttributes.cpp 文件,我可以禁用它吗?

c# - 从文件路径中删除 'head' 目录

c# - 为什么 RotateFlipType 枚举的实现方式不同?

c# - .Net 混淆器

java - 如何在混淆的 java 文件中找出导致它的原因?

c - 如何保护我的linux C程序免受盗版