软件加密技术和注册机制( 四 )


这其实是软件公司注册码计算过程的反算法,如果正向算法与反向算法不是对称算法的话,对于解密者来说,的确有些困难,但这种算法相当不好设计 。
于是有人考虑到以下的算法:
F1(用户名称) = F2(序列号)
F1、F2是两种完全不同的的算法,但用户名通过F1算法计算出的特征字等于序列号通过F2算法计算出的特征字,这种算法在设计上比较简单,保密性相对以上两种算法也要好的多 。如果能够把F1、F2算法设计成不可逆算法的话,保密性相当的好;可一旦解密者找到其中之一的反算法的话,这种算法就不安全了 。一元算法的设计看来再如何努力也很难有太大的突破,那么二元呢?
特定值 = F(用户名,序列号)
这个算法看上去相当不错,用户名称与序列号之间的关系不再那么清晰了,但同时也失去了用户名于序列号的一一对应关系,软件开发者必须自己维护用户名称与序列号之间的唯一性,但这似乎不是难以办到的事,建个数据库就可以了 。当然也可以把用户名称和序列号分为几个部分来构造多元的算法 。
特定值 = F(用户名1,用户名2,...序列号1,序列号2...)
现有的序列号加密算法大多是软件开发者自行设计的,大部分相当简单 。而且有些算法作者虽然下了很大的功夫,效果却往往得不到它所希望的结果 。
3.2时间限制
有些程序的试用版每次运行都有时间限制,例如运行10分钟或20分钟就停止工作,必须重新运行该程序才能正常工作 。这些程序里面自然有个定时器来统计程序运行的时间 。
这种方法使用的较少 。
3.3Key File 保护
Key File(注册文件)是一种利用文件来注册软件的保护方式 。Key File一般是一个小文件,可以是纯文本文件,也可以是包含不可显示字符的二进制文件,其内容是一些加密过或未加密的数据,其中可能有用户名、注册码等信息 。文件格式则由软件作者自己定义 。试用版软件没有注册文件,当用户向作者付费注册之后,会收到作者寄来的注册文件,其中可能包含用户的个人信息 。用户只要将该文件放入指定的目录,就可以让软件成为正式版 。该文件一般是放在软件的安装目录中或系统目录下 。软件每次启动时,从该文件中读取数据,然后利用某种算法进行处理,根据处理的结果判断是否为正确的注册文件,如果正确则以注册版模式来运行 。
这种保护方法使用也不多 。
3.4CD-check
即光盘保护技术 。程序在启动时判断光驱中的光盘上是否存在特定的文件,如果不存在则认为用户没有正版光盘,拒绝运行 。在程序运行的过程当中一般不再检查光盘的存在与否 。Windows下的具体实现一般是这样的:先用GetLogicalDriveStrings( )或GetLogicalDrives( )得到系统中安装的所有驱动器的列表,然后再用GetDriveType( )检查每一个驱动器,如果是光驱则用CreateFileA( )或FindFirstFileA( )等函数检查特定的文件存在与否,并可能进一步地检查文件的属性、大小、内容等 。
3.5软件狗
软件狗是一种智能型加密工具 。它是一个安装在并口、串口等接口上的硬件电路,同时有一套使用于各种语言的接口软件和工具软件 。当被狗保护的软件运行时,程序向插在计算机上的软件狗发出查询命令,软件狗迅速计算查询并给出响应,正确的响应保证软件继续运行 。如果没有软件狗,程序将不能运行,复杂的软硬件技术结合在一起防止软件盗版 。真正有商业价值得软件一般都用软件狗来保护 。
平时常见的狗主要有“洋狗(国外狗)和“土狗(国产狗) 。这里“洋狗主要指美国的彩虹和以色列的HASP,“土狗主要有金天地(现在与美国彩虹合资,叫“彩虹天地)、深思、尖石 。总的说来,“洋狗在软件接口、加壳、反跟踪等“软方面没有“土狗好,但在硬件上破解难度非常大;而“土狗在软的方面做的很好,但在硬件上不如“洋狗,稍有单片机功力的人,都可以复制 。

推荐阅读