如何防止任何C#应用程序的反编译

Kal*_*pak 26 c# obfuscation licensing decompiling piracy-prevention

我们计划使用C#和MySQL开发客户端服务器应用程序.我们计划像任何其他软件实用程序一样在货架上销售产品.我们担心我们的产品反编译在可用性和捆绑功能方面确实比竞争对手有一些优势.

我们如何防止我们的软件反编译,因此产品的业务逻辑仍然完好无损?

我们听说过Reflector和其他反编译器,它们使我们的代码非常容易被复制.

我们的客户群不是公司,而是医生,他们自己可能不会这样做,但我们的竞争对手可能想要复制/禁用许可,甚至复制代码/功能,以便我们的产品价值在市场上下降.

任何阻止这种情况的建议都是受欢迎的.

Bev*_*van 25

如果将.NET程序集部署到客户端计算机,则可以使用反射器和类似工具进行某种反编译.

但是,这种情况与您在本机C++中编写应用程序时遇到的情况没有实质性的不同.总是可以反编译 - 如果不可能,处理器也无法理解它.

你永远不会打败专家饼干 - 他们会把你的安全视为一个智力难题,只有挑战才能解决.

问题在于打败您的许可做法和投资回报是多么困难.

坐下来用电子表格查看可能的情景 - 危险可能比你想象的要小.

在您的软件中可以看到"易用性"等因素,供任何用户观察 - 因此您可以轻松复制.但是,良好的用户体验很少(并且很少被复制),因为大多数开发人员(包括我自己)都不像普通用户.

我建议你专注于让饼干的工作更难,因为你永远不可能让它变得不可能,只是无利可图.

尝试的一种可能性:作为安装过程的一部分,可以将程序集预编译为本机代码.出于性能原因,Paint.NET会这样做.我相信,一旦完成此操作,您就可以丢弃原始程序集并使用优化的本机代码版本.


Gan*_* R. 6

Google for .NET Obfuscator.你会发现很多产品会对此有所帮助.此外,Stack Overflow中已经提出了相关问题.

这里有一些:

编辑:在搜索De-Obfuscating工具时,我遇到了一个开源工具De4Dot.这个工具支持反编译由大多数商业工具创建的obhucated dll,并且也做得非常好.


Noo*_*ilk 6

如果是我,我不会试图混淆; 我会:

  1. 不用担心,并且不断改进并保持在前面

但其次

  1. 考虑通过Web提供"秘密"服务.由你来决定这是多么重要和可能; 但它确实"阻止"反编译,因为最终用户甚至没有代码.

  • 我喜欢这个主意.就在任何人使用该服务之前,他可以进行身份​​验证,以便他是许可证持有者. (3认同)