科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件利用硬件信息实现共享软件的安全注册

利用硬件信息实现共享软件的安全注册

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文提出了一种解决共享软件安全注册的实现方法。并对Visual C++ 6.0的编程实现过程作了介绍

作者:信息产业部电子第二十二研究所青 来源:yesky 2007年11月16日

关键字: 硬件信息 实现 共享软件 安全注册

  • 评论
  • 分享微博
  • 分享邮件

一、 引言

但现有共享软件的许多注册方法是存在漏洞的,不少破解网站通过正常渠道购买回一个注册码之后将其公布在其网站之上,更有甚者还提供生成注册码的注册机。以上的行为侵犯了软件开发者的知识产权,干扰了共享软件的正常发布。虽然国家也有保知识产权的相关法律条文,但显然在执行起来存在一定的难度。因此作为程序员的软件开发者应当具有自我保护意识,利用自己的专业特长,通过程序控制来确保自己的每一个注册码只对于一个软件拷贝。本文将根据笔者的实际编程经验,结合物理硬件信息的安全的注册方法实现过程进行较全面的介绍。

二、 注册源的采集

  为了确保注册码的唯一性,在注册源的采集上应当尽量选取一些唯一的、不易复制的软、硬件信息作为原始信息。硬件由于其不可复制性和物理唯一性成为了我们的首选目标,而且多数计算机配件在出厂时都有一个唯一的标识号,可以将其作为识别的依据。符合上述条件的标识号大致有硬盘的序列号、网卡的序列号、BIOS中的主版序列号或出厂日期和标志等几种,考虑到硬件通用性、实现起来的难易程度以及系统安全性等多种因素以硬盘序列号为佳,因网卡虽说唯一性最好但不能保证每台计算机都装有网卡,而ROM BIOS中F000H-FFFFH区域虽存有与硬件配置有关的信、F000H:FFF5H-F000H:FFFFH存有主机出厂日期和主机标志值等参数,但在Windows 9x的保护模式下编程实现是比较困难的。虽然在Windows 9x保护模式下对硬盘序列号也不能按通常在DOS模式下的通过硬盘端口1F6H和1F7H直接读取,但Windows API函数中提供的下面这个函数可以非常简单的获取到指定磁盘驱动器的序列号:

GetVolumeInformation("C:\\",NULL,NULL,&dwIDESerial,NULL,NULL,NULL,NULL);

  第一个参数设为"C:\\"表示我们要读取C盘驱动器的序列号。之所以选C盘,是因为我们不能保证用户有多个分区,而C盘却是每一个用户都具有的。该函数成功调用完毕后,在DWORD型的变量dwIDESerial中就存储了获取到的32位长的磁盘序列号。注册信息采集到后,关键的问题就是如何让用户将其返回给开发者。一种较简单的方法是把采集到的硬盘序列号与用户输入的注册名经过位操作的简单加密后存放到一个文本中通过邮件传送给开发者。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章