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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

但其次

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

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

这里有一些:

  • Dotfuscator的
  • 安全团队

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

我最后一次研究这个问题, Spices.Net Obfuscator看起来是市场上最好的东西。

不,我不为他们工作。 🙂

我使用smartassembly 。 它使用简单,并且还能够发送内置的崩溃报告。

这是关于混淆器的类似问题。 可能它为您提供了一些很好的信息。

回答关于.net代码的C ++包装器的问题; 我认为它不会起作用,因为当你部署应用程序时,包含业务逻辑代码的最终c ++ dll和.net dll将是独立的实体,那些想要获得业务逻辑的人仍然可以选择.net dll和peek里面。

你可能想要考虑一下Remotesoft Salamander Protector ,它比其他任何东西都好得多,因为它不可能反编译成高级语言。

当然,作为专家的任何人都可以花足够的时间使用你的软件并弄清楚,因为它确实反编译了一些,但它隐藏了所有的设置和获取方法

所以,他们可以达到顶峰,但这就是它。 他们必须弄清楚其余部分,这会降低任何人破解它的可能性。

希望这可以帮助

很长一段时间后写在这个post上。 我们购买了一个名为Intellilock的软件,它有助于防止反编译,模糊处理,并且还具有强大的许可模块。

我们没有去.Net Reactor ,尽管它有更多的预防控制,因为Intellilock很好地服务于我们的目的。

混淆器混淆代码但保护器保护。 您可以使用.Net protector: NetWinProtector

Intellilock在混淆和许可方面已经达到了我们的目的。 但我不推荐该产品,因为支持不符合标准。 我们没有及时回复我们面临的问题。 我们必须自己搜索和研究,甚至改变业务需求以实现一些目标。

通过这个答案,我不打算推​​广或降级任何软件,只是想让人们了解我们正在使用的产品,以便他们做出明智的决定。