如何防止我们的软件被反编译,以便产品的业务逻辑保持完整?
我们听说过Reflector和其他反编译器,它们让我们的代码非常容易受到抄袭的威胁。
我们的客户群体不是企业,而是医生,他们自己可能不会这么做,但我们的竞争对手可能想要复制、禁用许可证甚至复制代码/功能,以使我们的产品价值在市场上降低。
欢迎提出任何防止这种情况的建议。
如果是我,我不会试图混淆代码;相反,我会:
但第二点:
Intellilock在混淆和许可方面为我们服务得很好。但是,由于支持不到位,我不建议使用该产品。我们从未及时收到针对我们所面临问题的回复。我们不得不自己搜索和研究,甚至改变业务需求以实现一些目标。
通过这个答案,我并不打算推广或贬低任何软件,只是想让人们了解我们正在使用的产品,以便他们做出明智的决定。
你可能想考虑使用Remotesoft Salamander Protector,这比其他任何东西都要好,因为它使反编译到高级语言变得不可能。
当然,任何专家都可以花足够的时间来研究你的软件并找出其中的一些问题,但它会隐藏所有的设置和获取方法。
所以,他们可以窥视一下,但仅限于此。他们必须自己解决其余的问题,这降低了任何人破解它的概率。
希望这有所帮助。
很久没有在这个帖子上发言了。我们购买了一个叫做Intellilock的软件,它有助于防止反编译、混淆,并且还具有强大的许可模块。
尽管.Net Reactor拥有更多的预防控制,但我们并没有选择它,因为Intellilock已经足够满足我们的需求。
上一次我调研时,Spices.Net Obfuscator 看起来是市场上最好的东西。
不,我不在他们工作。 :)
其他人提到的混淆器可能非常好。
你可能没有考虑过的另一种方法是使用完全编译为机器代码的语言(如C++)编写一些核心业务逻辑。
这样做的好处是,它使得他人更难反编译您的代码。缺点是您需要维护两种语言的代码。这可能不是您情况下最好的方法,但在只需要混淆一小部分代码而其余代码是UI装饰时非常有用。
例如,您的医疗软件包可能正在执行某些腺体的边缘检测,以便告诉医生该腺体的大小。从位图图像计算腺体大小的算法将包含在使用C++编写的DLL中。