一个关于要求用户注册(保护程序版权)的VB6示例
如何防止程序被未注册用户使用,或者,程序当中的某些功能,被未注册用户使用?当然,是要求用户在启动程序时,输入密码口令啦。
问题是,这种方式(用户名+程序序列号),可以大家公用序列号呀。
这个行为,相信大家都或多或少地干过吧。
于是,聪明的中国人发明了机器码技术(呵呵,没查询过,姑且把功劳都归功于国人吧)。
但知道了机器码,如何为机器码制作注册码呢?
很简单,使用数字签名技术:
用户把机器码发给作者,作者对机器码进行数字签名,回传给用户。
用户程序以签名进行验证,如果注册码与机器码相同,则注册是正常的。
当然,这种作法也还是简单了点,别人很容易拦截,如果有人有了一个正常的注册码,在已经注册的机器上,对机器码进行拦截记录,然后,在未注册的机器上,拦截机器码的读取过程,在程序读机器码的时候,把原来记录下来的机器码提供给程序,就可以通过验证啦。因为机器码与注册码是一一对应的,用旧的机器码,自然能对应得上旧的注册码啦。
事实上,许多破解程序,也正是这么干的。
所以,直接使用机器码进行验证,也不是很高明的方法。
所附的示例,不是直接验证机器码与注册码是否匹配,而是用机器码、注册码混合后,生成了一些程序当中的参数。
如果用户提供了虚假的注册码,程度不会马上显示出异常来,但运行结果却可能(实际上是“肯定”)是异常的。
本次上传的示例原理说明:
这是一个摄氏、华氏、K氏温度换算的函数(示例,当然很简单明了),其中用到1.8/273.15两个参数。
这两个数值没有直接写入到程序当中。
如果用户正常注册,程序可以用机器码与注册码计算出这两个数值来。
如果注册码有误,机器码与注册码不匹配,当然参数就出错,计算结果也出错啦。
反盗版(注册)示例.rar
(300.04 KB)