如果说我开始学习C#时学到的第一件事是最重要的.你可以反编译任何文件.使用反射镜或其他工具进行净装配.许多开发人员都没有意识到这一点,当我向他们展示他们的源代码时,他们中的大多数人都感到震惊.

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

编辑:

我的问题不是为了防止盗版.我只想阻止竞争对手阅读我的代码.我知道他们会的,而且他们已经做到了.他们甚至告诉我了.

推荐答案

需要记住的一件事是,您想要以一种有商业意义的方式来做这件事.要做到这一点,你需要明确你的目标.那么,你的目标到底是什么呢?

防止盗版?这个目标是无法实现的.甚至本机代码也可以反编译或破解;网上有大量可用的warez(即使是Windows和Photoshop等产品),这证明了一个坚定的黑客总能获得访问权限.

如果你不能防止盗版,那么仅仅减少盗版又如何呢?这也是被误导的.只需一个人破解您的代码,所有人都可以使用它.你每次都得走运.海盗们只需要幸运一次.

我向你们the goal should be to maximize profits.个人打赌,你们似乎相信制止盗版对于这项努力是必要的.不是的.利润就是收入减go 成本.Stopping piracy increases costs.这需要付出努力,这意味着在这个过程中的某个地方增加了成本,因此减少了等式中的那一边.Protecting your product also fails to increase your revenue.我知道你看着所有的盗版,你会发现只要他们愿意支付你的许可费,你就能赚到所有的钱,但现实是这将会发生.这里有些夸张,但它通常认为,无法破解您的安全的海盗要么会找到类似的产品,要么可以破解,或者没有.他们将以never代之以买,因此not代表销售损失.

此外,securing your product actually reduces revenue人.这有两个原因.其中一个原因是,一小部分客户对你的激活或安全性有问题,因此决定不再购买或要求退款.另一个原因是,只有一小部分人在购买盗版软件之前try 过确保其正常运行.限制你的产品的盗版发行(if你可以在这方面取得成功)会阻止这些人try 你的产品,因此他们永远不会购买.此外,盗版还可以帮助你的产品传播到更广泛的受众,从而接触到更多愿意为此付费的人.

A better strategy is to assume that your product will be pirated, and think about ways to take advantage of the situation. A couple more links on the topic:
How do i prevent my code from being stolen?
Securing a .NET Application

.net相关问答推荐

使用CLR将数据从Excel导入SQL Server时出错

cmd 冻结中的 dotnet 命令.怎么了?

使用 Task.WhenAll 但需要跟踪每个单独的 Task 的成功

NonSerialized 属性

为什么 StyleCop 建议在方法或属性调用前加上this?

C#6.0 字符串插值本地化

.NET 的 Visual Studio 调试器提示和技巧

是否有任何 x 次的 for 循环的更短/更简单的版本?

C#:内存不足异常

什么是 project.lock.json?

将接收到的对象转换为 List 或 IEnumerable

在未安装 Visual Studio 的机器上使用 FUSLOGVW.EXE

有没有办法从方法返回匿名类型?

无法使用 Unity 将依赖项注入 ASP.NET Web API 控制器

Find() 和 First() 抛出异常,如何改为返回 null?

如何以编程方式删除 WebClient 中的 2 个连接限制

例外:不支持 URI 格式

程序员应该使用 SSIS,如果是,为什么?

如何从 webclient 获取状态码?

从 bcp 客户端接收到 colid 6 的无效列长度