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

如何防止我们的软件被反编译,从而保证产品的业务逻辑完好无损?

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

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

任何防止这种情况发生的建议都是非常受欢迎的。

有帮助吗?

解决方案

如果您部署.NET程序集到客户端计算机,某种反编译的将使用反射器和类似的工具总是可能的。

不过,这种情况是不是如果你写在本地C ++应用程序你会遇到什么实质性的不同。它始终是可能的反编译的事情 - 如果它是不可能的,则处理器不能要么理解

您永远不会打败专家饼干 - 他们就会把你的安全视为一个智力拼图需要解决的单独挑战

现在的问题是围绕着它是如何努力来击败你的许可行为和投资回报率的。

坐下来与电子表格,并通过可能的情况看 - 的危险比你想象的可能不太。

就像在你的软件“易用性”是可见的任何用户观察的因素 - 所以你会觉得它很容易复制。但是,良好的用户体验是罕见的(而且很少复制好),因为大多数开发者(包括我自己)都没有像典型的用户。

我建议你专注于制作饼干的工作更难,因为你永远不能使它不可能,只是不盈利的。

一种可能尝试:这是可能的预编译组件为本地代码作为安装过程的一部分。 Paint.NET这是否出于性能的考虑。我相信,一旦你这样做,你可以放弃原来的组件和使用进行了优化,本地代码版本。

其他提示

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

  1. 不用担心,目标是不断改进并保持领先地位

但其次

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

Google 的 .NET 混淆器。您会发现很多产品对此有所帮助。Stack Overflow 中也已经提出了相关问题。

这里有一些:

编辑:在搜索反混淆工具时,我遇到了一个开源工具 德4点. 。该工具支持反编译大多数商业工具创建的混淆的 dll,并且效果也相当不错。

在最后一次看成这样, Spices.Net混淆看上去像目前市场上最好的东西。

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

我使用 smartassembly 。它简单易用,还具有发送崩溃报告过你在建的能力。

在模糊处理其他人所说的可能非常好。

您可能没有考虑另一种方法是使用被完全编译成机器代码,如C ++语言编写某些核心业务逻辑的。

这样做的好处是,它使得它更加难以有人反编译代码。这一个缺点是,你必须在两种语言的代码维护。这可能不是您的具体情况最好的方法,但在需求,而其余的代码是UI的绒毛被扰乱只有代码的一小部分情况下非常有用。

作为一个例子,您的医疗软件包可能执行比方说,某些腺体边缘检测告诉医生的尺寸的目的,所述腺。用于计算从位图图像的腺的大小的算法将被包含在用C ++编写的DLL。

解答有关周围的.NET代码的C ++包装问题;我不认为这是可行的,因为当你部署应用程序包含业务逻辑代码将是最后的C ++ DLL和.NET的DLL谁想要得到你的业务逻辑独立的实体和那些仍然能够只挑出来的NET的DLL和PEEK内部。

您可能要考虑 Remotesoft大鲵保护 这是比任何东西,因为它使得它不可能别人反编译的高级语言要好得多。

当然,任何人谁是专家能花足够的时间与你的软件和数字出来,因为它反编译了一些,但它隐藏所有的set和get方法

所以,他们可以得到一个高峰,但也差不多了。他们必须弄清楚这降低任何人的概率只是裂化它的其余部分。

希望这有助于

书写在此线程长时间之后。我们已经购买了一个软件叫 Intellilock 有利于防止反编译,混淆乐于助人,也有很强的许可模块。

我们没有去净反应堆即使它有更多的预防控制为Intellilock是我们的服务宗旨不够好。

混淆迷惑的代码,但保护器保护。 您可以使用的.Net保护: NetWinProtector

Intellilock一直担任我们的目的很好地混淆的条款以及许可。但由于支持是没有超出该商标,我不会推荐该产品。我们从来没有得到及时的答复,因为我们所面临的问题。我们不得不寻找和研究我们自己,甚至改变业务需求,以实现一些目标。

通过这个答案,我不打算升级或降级的任何软件,而只是希望让人们了解有关我们使用,使他们能够做出明智的决定的产物。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top