2014-03-05 22 views
0

我编写了一个注册码脚本,该应用程序在连接到互联网的计算机上时非常有用。但是,如果应用程序位于保持脱机的计算机上,我希望脚本能够正常工作。我希望你们能给我一些关于如何让这个工作的想法。最好的解决办法是注册/验证破解

脚本如何工作。

  1. 的用户安装在用户点击一个“指纹”按钮来生成代码是唯一的他的计算机中的应用
  2. 在开口屏幕(OS和硬件信息的组合)
  3. 用户提交指纹
  4. 我有一个应用程序在我的端,我拿他的指纹,添加一个到期日期,并输出一个密钥文件是唯一的他的电脑,将导致应用程序无用,直到密钥文件被更新。
  5. 要检查到期日期,应用程序会在每次加载应用程序时执行服务器检查。

所以我面临的问题是,当计算机处于脱机状态时,它将使用系统时间来检查到期日期。那么迄今为止,没有任何东西可以让人们将他们的电脑保持在离线状态,并且只是回滚系统时钟。

其他然后强迫用户在线加载应用程序,我似乎无法想象一个合理的系统检查 - 其他然后服务器检查,没有必要这个应用程序在线。我知道棘手,我很难过。

任何帮助总是赞赏。

回答

1

首先,用户总是会找到一种方法来打破您的脱机授权机制,并且经常会这样。所以在做任何努力之前先考虑一下。

您需要更改许可机制。考虑到可能有用户已经在旧机制上使用您的应用程序,这会困难得多。如果您只想保留新许可机制或为现有用户提供更新,则可能必须保留这两种许可机制。

要实施脱机许可方案,您可以使用LicenseManager类。请注意,这绝不会像您目前的方法那样有效。以下是我能想到的简单方法:

  1. 当用户安装或第一次加载应用程序时生成一个ID。
  2. 沿着您选择的算法安装的日期进行加密。将其保存在注册表或XML文件中。
  3. 每次用户打开应用程序时,都会加密并保存上次使用的日期。
  4. 如果在任何时间点,当前日期都小于上次使用日期,请不要更新上次使用的日期。相反,请告诉用户更新当前日期(确保照顾时区和夏令时)。

如果您的用户很少使用您的应用程序,他们仍然可以使用它。

+0

我终于完成了它,我觉得它看起来不错步骤:1.程序加载2.用户必须连接到互联网,以创建一个计算机和时间独有的指纹4.用户将代码传递给我然后我生成一个单独的代码,以解锁计算机,直到过期日期5.程序更新时间每次应用程序加载和退出,以确保时间前进6.应用程序也连接到互联网,当它发现它更新时间7.任何时候,只要网络验证时间,就不会同步电脑锁 – Nefariis

0

正如您所指出的,您不能相信客户端提供准确的时间数据。如果不能访问可信赖的时间源,则无法可靠地防止您仅使用过期日期描述的攻击。

您可以强制使用可信的时间源(例如,将内部RTC用作种子的某些USB PRNG加密狗)来验证系统时钟,然后阻止应用程序运行。但是,对于低容量,这种加密狗通常每个单元成本高达60美元。

一个简单的对策是记录时间的应用程序已经打开,然后终止如果应用程序已经开了太久没有在检查IE:如果您预计在办理入住手续频率为3个月,而且电脑说自上次检入后3天内,但应用程序已经打开了45天,可以确定时钟不正确。

即使如此,您的代码仍在客户端的不可信计算机上运行,​​并且可能会被破坏。任何DRM措施仍然只是模糊处理。