如何在不使用数据库的情况下从盗版中保护我的Windows应用程序?

时间:2011-06-11 03:55:50

标签: c#

我正在使用C#为我的客户端在.NET Framework 3.5中开发一个Windows应用程序。 我的应用程序中不需要任何数据库。

我希望通过在安装时进行注册过程来保护我的应用程序,在该过程中将要求用户输入注册密钥,该密钥应该取决于机器,否则用户可以复制安装文件夹并分发给其他人,我不想发生。

请建议我,如何实现这一点。

谢谢, Bibhu

3 个答案:

答案 0 :(得分:2)

我的建议就是这样:

1)您可以在注册后创建注册码,并在启动应用时查看此注册码。

2)您可以创建一个Web服务(通过本地网络或互联网),并在启动时检查此版本是否已注册

3)创建一个自定义文件并根据机器存储散列值,并在启动时应用程序检查此文件

每3种方式都不要忘记OBFUSCATION

答案 1 :(得分:2)

我相信您需要注册服务。

  • 当用户注册(他们需要在线)时,他们的注册“代码”会连同他们的机器详细信息/其他身份证明(用户名?)一起发送到您的注册服务。

  • 您的服务会验证此&返回一个密钥,您的应用程序可以使用其机器详细信息/标识对其进行解密。您的服务还会将注册码标记为“已使用”,以便其他任何人都无法通过使用它来获取有效密钥。

  • 应用程序将有效密钥存储在注册表中,甚至是配置。它不适用于其他机器,因为它特定于机器详细信息。

答案 2 :(得分:2)

无法保证软件安全。即使通过网络注册也可以使用数据包分析器伪造。在保护软件方面,您所能做的只是让专业人员稍微不方便,对于困难的人来说是困难的,对于没有知识的人来说是不可能的。一般来说,人们都认为混淆不是一种好的保护措施,因为无论如何,有人最终会将其解决并发布。

另请注意,您制作程序越安全,合法用户可能会找到它的可用性就越低。如果安全性被破坏,那么在可用性,安全性和丢失的价值之间取得很大的平衡。没有硬性和快速的“正确”方法来保护某些东西。

对于机器相关信息,您可以收集有关该系统上硬件的信息,以某种方式对其进行散列,并将值存储在某处,然后每次在程序启动时进行检查。这不是万无一失的,但它可以很容易地实现一些安全性。