软件保护方法研究

2009-07-29 07:11马振飞
中国新技术新产品 2009年12期

马振飞

摘要:随着计算机的广泛应用和网络的日益普及,计算机软件被盗的现象也越来越多,而且呈现出日渐猖獗之势。本文从软件保护的现状及软件保护的现实意义入手,通过对软件保护技术的各种方法分析,并且针对各种保护方法进行比较、权衡、及算法研究,提出了一套较为完整的软件保护方案。

关键词:软件保护;技术保护;保护方案

1 引言

随着计算机技术的迅猛发展以及软件技术的快速成长,计算机软件技术不仅对国民经济建设、信息安全起着重要作用,而且还是提高科技创新能力,增强技术竞争实力的重要组成部分。由于软件的复制、拷贝是件很容易的事,所以导致非法复制、盗版软件之风的泛滥。在这种形势下,为了防止软件的非法复制、盗版,保护软件开发商的利益,研制者和销售商对自己的软件进行技术保护和数据加密,以此来保护计算机软件著作权人的权益,鼓励计算机软件的开发与应用,促进软件产业和国民经济信息化的发展。

2 软件保护技术

从技术上采取一定的防范措施非常重要,在一定范围内可以防范软件的非法复制。下面介绍一下当前常见的一些软件保护技术:

2.1 时间限制保护技术

在使用软件时采用时间进行限制,如使用期30天,当过了共享软件的使用期后,就不予运行,只有向软件作者付费注册后才能得到一个无时间限制的注册版本。这种保护方式的程序很多,它们在安装时,在系统某处做上标记,比如将系统的安装时间存放在一个文件中,每次运行都用系统的当前时间和安装时间作比较,判断用户还能否正常使用。

2.2 序列号保护技术

当用户从网上下载某个共享软件后,如果过了软件的使用期,必须经过注册才能继续使用。注册过程一般是把用户的私人信息告诉给软件公司,软件公司会根据用户的信息利用预先写好的注册码程序计算出一个序列号,用户使用序列号按照必要的步骤在软件中输入注册信息和序列号,在经过软件对其合法性验证通过后,软件就会取消本身的各种限制,而成为正式版本。

2.3 注册文件保护技术

注册文件保护技术是利用文件来注册软件的保护方式。注册文件一般文件比较小,可以是纯文本文件,也可以是包含不可显示字符的二进制文件,其内容是加密过或未加密的数据,其中可能有用户名、注册码等信息。文件格式则由软件作者自己定义,试用版软件没有注册文件,当用户向作者负费注册后,会收到作者寄来的注册文件,其中可能包含用户的个人信息。用户只要将这些文件放入指定的目录,就可以让软件成为正式版。

2.4 光盘保护技术

一些采用光盘形式发行的应用软件和游戏在使用时需要检查光盘是否插在光驱中,如果没有,则拒绝运行。这是为了防止用户将软件或游戏的一份正版拷贝安装到多台机器上并同时使用。程序在启动时判断光驱中的光盘上是否存在特定的文件,如果不存在则认为用户没有正版光盘,拒绝运行。在程序运行的过程当中一般不再检查光盘的存在与否。

2.5 反跟踪保护技术

好的软件保护都要和反跟踪技术结合在一起。如果没有反跟踪技术,软件等于直接裸露在解密者面前。这里说的反跟踪,指的是反动态跟踪。即防止解密者用SoftICE之类的调试器动态跟踪,从而进行分析软件。这种技术一般是检测这些特定的调试器是否驻留内存,如果驻留内存,就认为被跟踪,拒绝执行,或进行一些惩罚性措施。

2.6 反-反汇编保护技术

可针对专门的反汇编软件设计的陷阱,让反汇编器陷入死循环,但这种方法没有通用性。具体方法是:在程序中加入一些无用的字节来干扰反汇编软件的判断,使得它错误地确定指令的起始位置,也就达到了干扰反汇编器工作的目的。

2.7 加壳保护技术

壳是计算机软件中一段专门负责保护软件不被非法修改或反编译的程序,它先于软件原程序运行并拿到控制权,进行一定处理后再将控制权转交给原程序,实现保护软件的任务。加壳后的程序能够有效防范静态分析和增加动态分析的难度。

2.8 加密狗保护技术

加密狗是一个安装在并口、串口、U口等接口上的硬件设备,并带有一套驱动软件和工具包。当被加密狗保护的软件运行时,程序会搜索是否有安插在计算机上的硬件,并对其发出一系列操作指令,正确的响应才能使软件继续运行,从而达到保护软件,防止盗版的目的。

3 软件保护技术的应用

3.1 当前保护技术的局限

软加密技术是相对成熟的技术,它的最大优势在于加密成本低。无论哪种软加密方法都是对正常的软件者进行人为地制造障碍,虽然不会影响到软件的性能,但有可能给软件引入许多未知的错误。与纯软件的加密方法相比,硬件加密有着不可比拟的优势,因为对盗版者而言,硬加密会比软件加密要难以对付,但是硬件加密成本会比较高。

3.2 软件保护技术的应用

前面介绍了当前常见的一些软件保护技术,其中有些技术非常好好,如序列号技术,几乎所有的软件都使用了这种技术。但是,无论那种技术都是软件和硬件进行分离的处理的,不能彻底的保护好软件。

针对前面所述的一些问题,通过各方面比较、权衡、及算法研究,完整的保护流程应该是:首先软件程序必须有限制,至少要求要注册才能使用完整功能,做到程序运行必须和用户机器硬件挂钩的注册码来解开关键的功能,然后为了防备被解密者用各类工具得到程序关键点和关键信息,必须采用反跟踪,反调试和反汇编静态分析。当然,最好还要给程序穿上一件外套,将程序包裹起来,即采用专门的加壳软件或者加密锁产品等将自己的程序处理后提高防范能力,大大提高破解的门槛。

还有,要考虑如何有效保证自己的程序只提供给正式用户使用,而非正式用户在正常途径下即使有了正式软件业也不能正常使用。这个问题现在通常采用"一机一码"的注册码许可方式来解决。大致原理就是将程序的关键功能用注册码方式保护起来,正式用户在输入对应自己的注册码的硬件信息的注册码后才能正常使用所有功能,非正式用户没有对应自己的硬件信息的注册码而无法使用注册码保护起来的关键功能。要实现这个功能,关键是获取一个准确的硬件信息,而这个硬件信息最好与操作系统无关,这样就算用户的系统出问题而重新安装后也不变化,既能方便用户的使用,也能方便作者可管理注册码的发放。

为了提高反解密的对抗能力,通常还可以在程序代码中加入反跟踪、反调试和反汇编静态分析的程序,也可以采取动态生成调用程序的入口地址等技术。最后再利用软件壳来对程序进行处理,这样,解密者要想破解程序,先面临的是壳程序,只有解决到壳程序以后才能对程序进行破解。这样就可以很轻易的将程序防护性能强度提升一个层次。

6 结论

通过对当前常见的一些软件保护技术,如序列号保护技术、反跟踪保护技术、反-反汇编保护技术、加壳保护技术、加密狗保护技术等进行分析,得出各种技术的实现原理以及优缺点,提出了一套技术上较为完整的保护流程。但是,软件保护只靠技术进行保护还是不够的,还需要相关的法律法规进行管理,如版权法、专利法、合同法、商标法等各种法律保护,只有从法律、技术两方面结合起来才能更加有效的保护好软件的合法权利。

参考文献

[1] 段钢.加密与解密[M].电子工业出版社:2003.

[2] 看雪学院.软件加密技术内幕[M].电子工业出版社:2004.

[3] 武新华. 加密解密全方位学习[M].中国铁道出版社:2006.

[4] 谭貌、陈义、涂杰.软件版权保护技术的研究与分析[J].计算机应用与软件:2007.

[5] 郭勇、孔宝根. 软件保护及破解策略[J].航空维修与工程:2004.