软件产品卖出去以后,如何防止客户在多台电脑上重复安装呢?最偷懒的方法就是使用别人的硬件加密狗解决,但是这样的话一来随着销售量的积累会增加成本,二来很多客户不想在电脑上插如此多的加密狗(因为其他的软件可能也需要用加密狗,会导致USB接口紧张)。
那我们还可以通过软加密的方式,即唯一序列号的形式,来代替硬件加密狗。
基本思路如下:
1. 在前期给客户安装的都是试用版本。试用形式分为三种:A. 时间限制;B. 次数限制;C.功能限制。
2. 客户在安装完软件后,在安装目录下将服务器的硬盘ID(或者CPUID)按照算法A加密,这里我们称其为机器码,保存在特定的文件里,比如可以取名为machine.usr。
3. 客户将machine.usr发送给软件生产商,软件生产商将machine.usr导入到序列号生成器当中,将机器码按照算法B生成唯一的序列号,将序列号传回给客户。
4. 客户在程序中输入该序列号,程序对序列号进行核对,如果序列号与程序算出的相同则升级成正式版。
至此,我们前期需要准备的事情大致如下:
1. 生成机器码的加密算法。
2. 生成序列号的加密算法。
3. 时间限制时用来判断过期的方法。
有没有方法能够脱离服务器自己记录使用时间的,一般都是读取计算机本地时间源,但这种方式很容易被钻空子,即使你将安装和使用时间写入注册表,依然可以轻松破解。对于判断过期的方法,暂时没有好的思路,也许有完美的方法,但我还没掌握到。