我如何保护我的.NET程序集免受反编译?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

如果我开始使用C#时学到的第一件事是最重要的一件事。您可以使用Reflector或其他工具反编译任何.NET程序集。许多开发人员都没有意识到这个事实,当我向他们展示他们的源代码时,他们中的大多数人都感到震惊。

防止反编译仍然是一项艰巨的任务。我仍然在寻找一种快速,简单和安全的方式来做到这一点。我不想混淆我的代码,所以我的方法名称将是a,b,c左右。反射器或其他工具应该无法将我的应用程序识别为.NET程序集。我已经知道一些工具,但它们非常昂贵。有任何其他方式来保护我的应用程序吗?

我的问题的原因不是为了防止盗版。我只想阻止竞争对手阅读我的代码。我知道他们会和他们已经做到了。他们甚至告诉我。也许我有点偏执,但商业竞争对手阅读我的代码并不会让我感觉良好。

提问于
用户回答回答于

有一点需要记住的是,你想以一种有商业意义的方式来做到这一点。要做到这一点,你需要定义你的目标。那么,你的目标究竟是什么?

防止盗版?这个目标是不可实现的。即使是本地代码也可以反编译或破解; 在线提供的众多warez(即使是Windows和Photoshop等产品)也证明了一个确定的黑客总能获得访问权限。

如果你不能防止盗版,那么只是减少盗版呢?这也是错误的。它只需要一个人破解你的代码,以便每个人都可以使用它。每次你都必须是幸运的。海盗只需要幸运一次。

我把它给你的目标应该是最大化利润。你似乎认为,停止盗版是这项工作的必要条件。不是这样。利润就是收入减去成本。停止盗版会增加成本。它需要付出努力,这意味着在这个过程的某个地方增加成本,从而减少等式的这一方面。保护产品也做什么,以增加收入。我知道你看看所有这些海盗,看看你可以赚的所有钱,如果只是他们会支付你的执照费,但现实是,这将永远不会发生。这里有一些夸张的说法,但一般认为,无法破解安全的海盗会找到一种类似的产品,可以破解或者无法破解。他们将永远不会买它来代替,因此他们不会代表销售损失。

此外,保护产品实际上减少了收入。有两个原因。其中一小部分客户在激活或安全方面遇到问题,因此决定不再购买或要求退款。另一个是实际尝试盗版软件的人中很小比例的人,以确保它在购买之前能够正常工作。限制你的产品的盗版分销(如果你在某种程度上能够取得成功)可以防止这些人不断尝试你的产品,所以他们永远不会购买它。此外,盗版还可以帮助产品传播给更广泛的受众,从而吸引更多愿意为此付费的人。

更好的策略是假定你的产品会被盗版,并想办法利用这种情况。

用户回答回答于

在这里工作时,我们使用PreEmptive Solutions的Dotfuscator

尽管保护.NET程序集是不可能的,但我认为Dotfuscator使其足够困难。我带来了很多混淆技术;

交叉大会重 命名重命名计划 重命名前缀 增强重载归纳 增量混淆 HTML重命名报告 控制流 字符串加密

事实证明,他们对于小公司来说并不昂贵。他们对小公司有特殊的定价。

当然有免费的替代品;

扫码关注云+社区