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

时间:2009-08-14 05:44:55

标签: c# licensing obfuscation decompiling piracy-prevention

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

我们如何防止我们的软件反编译,因此产品的业务逻辑保持不变?

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

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

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

12 个答案:

答案 0 :(得分:25)

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

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

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

问题围绕着打败您的许可做法和投资回报率的难易程度。

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

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

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

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

答案 1 :(得分:6)

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

以下是一些:

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

答案 2 :(得分:6)

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

  1. 不用担心,并且不断改进并留在前面
  2. 但其次

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

答案 3 :(得分:0)

上次我调查时,Spices.Net Obfuscator看起来是市场上最好的东西。

不,我不为他们工作。 :)

答案 4 :(得分:0)

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

答案 5 :(得分:0)

以下是关于Obfuscators的类似问题。可能它会为您提供一些好的信息。

答案 6 :(得分:0)

其他人提到的混淆器可能非常好。

您可能没有考虑的另一种方法是使用完全编译为机器代码的语言(如C ++)对某些核心业务逻辑进行编码。

这样做的好处是,它使得某人反编译代码变得更加困难。这样做的一个缺点是你有两种语言的代码需要维护。这可能不是适用于您的情况的最佳方法,但在代码的其余部分需要混淆而代码的其余部分是UI漏洞的情况下非常有用。

例如,您的医疗软件包可能正在对某些腺体进行边缘检测,目的是告诉医生所述腺体的大小。从位图图像计算腺体大小的算法将包含在用C ++编写的DLL中。

答案 7 :(得分:0)

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

答案 8 :(得分:0)

您可能需要考虑Remotesoft Salamander Protector 这比其他任何东西都要好得多,因为它无法反编译成高级语言。

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

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

希望这会有所帮助

答案 9 :(得分:0)

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

我们没有选择.Net Reactor,即使它有更多的预防控制,因为Intellilock正在很好地服务于我们的目的。

答案 10 :(得分:0)

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

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

答案 11 :(得分:0)

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