我们只是用C#winforms开发一个应用程序,有没有什么好的加密方法来帮助我们防止盗版? 我看到一些软件可能需要硬件支持来保护他们的软件,如何实现呢? 提前谢谢!
答案 0 :(得分:17)
好的,你在这里混淆了几个不同的概念。
加密旨在让人们远离您的数据。
混淆用于尝试阻止对代码进行逆向工程。
许可用于确保使用的副本数量不超过购买的数量。
您需要研究混淆和软件许可。混淆是因为您希望阻止它们对您的许可方案进行逆向工程,以便复制它或者只是绕过它。
从许可角度来看,有许多不同的途径。硬件保护意味着您的应用程序查询某种类型的加密狗以检索有效密钥。如果加密狗存在并且密钥正常,那么您的应用程序就会运行。
软件许可可能有点复杂。您通常会有某种类型的电话主页代码,它应该将人类可读/可键入密钥的加密版本发送到您的许可服务器以进行验证。您需要包含某些类型的其他机器信息(例如硬盘驱动器序列号),以确保不会为不同的盒子多次激活该键。
有时,激活过程会下载其他文件以使应用运行。我希望这能给你一个开始。
答案 1 :(得分:10)
在您花费太多时间和精力来制止盗版之前,请确保您有一套明确的工作回报目标,这些目标将证明花费资源。
看起来并不简单 - 有很多证据表明,无论你的安全性有多好,大多数海盗都不会购买你的产品。如果他们无法破解它们,他们就会去其他地方或者不去。这意味着停止盗版带来的额外销售额很少。更重要的是,盗版者甚至可以帮助推广您的软件,因此将其锁定可能会降低您的总销售额。
因此,你需要考虑为什么你要阻止盗版,因为它会给你或你的公司带来净收益,而不是阻止海盗获得收益。这不是一个零和的情况,所以最大限度地利用自己的利润的方法通常包括允许海盗也有他们的时刻。一个基本的混淆器或天真的产品钥匙(它不一定是牢不可破的)可能很好地捕捉一些低悬的果实,但是你可能没有多大的帮助。
您可能也想阅读这些内容:
How do i prevent my code from being stolen?
Securing a .NET Application
答案 2 :(得分:1)
我认为您正在寻找obfuscation?
答案 3 :(得分:1)
通常通过混淆(查找Dotfuscator)来保护代码。大多数情况下,许可保护可以通过FlexLm或Xheo等第三方工具提供更好的服务。