目前,国内软件销售过程中采用了一种新的方式:开发者根据
计算机中不同的硬件配置标志直接在应用程序中设置密钥,限制程序的使用次数或者限制某些先进功能的使用,然后将受限制的应用程序无偿提供给用户。用户在试用一段时间之后如果觉得很满意,就可以将安装程序提取的硬件配置解密密钥或已经采集机器配置情况的应用程序提供给开发者,并花少量费用购买自己机器中的电子
注册密钥,从而能够充分利用应用
程序的所有功能。
在应用程序中利用电子注册来限制应用程序的部分功能,这样既可以让用户先试用然后再决定是否购买应用程序,又保护了开发者的合法劳动成果,减少了用户与开发者之间的不必要的中间环节。开发者直接得到用户购买软件的费用,真正地体现了开发者所创造的价值;用户在试用软件之后再决定是否购买,从而使得用户能够得到称心如意、物有所值的软件。因此,不通过中间环节这种销售方式降低了软件的成本,使开发者和用户双方都受益。同时,这种方式还可以使得开发者能够直接获得用户的反馈信息,促使开发者开发出功能更加完善的应用
程序。
然而,要想在应用程序中实现电子注册功能决不是件容易的事情,尤其是在Windows 平台推出以后,要想实现一个跨平台的应用程序电子注册功能,则要求开发者应具有丰富的编程技巧和实际开发经验以及广阔的开发视野。笔者通过实践探索,终于成功地实现了跨越DOS、Windows 3.X和Windows 95平台的应用
程序电子注册功能。下面将阐述其实现原理及技巧。
一、注册密钥点的选择与生成
实现应用
程序的电子注册功能,最关键的
问题是采集硬件配置中的密钥点。在DOS 系统下,可以通过硬盘端口1F6H和1F7H直接读取硬盘的序列号等作为密钥算法的数据,因为每块硬盘的型号、版本号和序列号均不同,只要用户提供上述内容,利用这种方法生成的注册密钥在每台
计算机中均不同,从而实现电子注册的功能。著名的字表处理软件CCED 5.18中采用的就是类似的方法。虽然这种方法在绝大数场合下很有效,甚至可以在Windows 3.X系统和Windows 95系统的兼容模式下通过,但在最高性能配置的Windows 95保护模式下却行不通,原因是Windows 95保护模式下不允许通过端口方式读取硬盘类型参数,所以利用这种方法无法实现跨平台的通用电子注册功能。
本人仔细分析计算机中ROM区的F000H-FFFFH内容后 ,发现该区域中记录着很多与硬件配置有关的信息(如CMOS配置信息、主板名称、型号和序列号、主机标志字节和生产日期等)。可以采集其中一处或几处作为注册密钥算法的原始数据(如机器ROM区中的F000H:FFF5H-F000H:FFFFH中依次存放主机出厂日期和主机标志字节的内容),这些硬件特有的信息对于不同型号的
计算机来说是不可能相同的。因此,完全可以将其作为注册密钥算法的原始数据,而且这些内容在DOS、Windows 3.X和Windows 95下均相同。需要注意的是,如果在实际应用中真的将该采集点作为算法的原始数据,则不应该包括F000:FFF0H开始的前五个字节的内容,原因是该地址已被用作机器热启动时的入口地址,在DOS、Windows 3.X和Windows 95系统中对热启动复合键Ctrl+Alt+Del的处理
程序均不同,因此该处的内容在三者之中也都不相同,读者应记住这一点。
利用上述方法取得注册密钥算法的原始数据后,开发者就可以确定自己的加密算法,这可以通过编程语言中丰富的位操作功能来实现。然后将注册加密算法增加到应用程序中需要限制的部分,并