软件版权保护

2024-07-26

软件版权保护(精选12篇)

软件版权保护 篇1

摘要:根据软件水印原理,软件水印可以应用于验?证软件版权所有。其方法是将软件版权信息作为水印内容,以可执行文件作为嵌入载体。在分析可执行文件各节结构存在一定程度的空余存储空间之后,可以利用这些空余空间或者构造空余空间,将水印信息经过加密并设计通用的策略嵌入其中。同时修改可执行文件的相关特征数据,以实现嵌入水印的隐蔽性。嵌入的水印密文可以被提取并解密,从而声明软件版权。

关键词:软件水印,版权声明,PE文件格式,加密

目前主要的软件保护技术有:序列号保护,警告(NAG)窗口,时间限制,Key File保护,限制功能保护等等。基于硬件的方法有加密狗、加密锁保护,光盘保护等等。然而,随着互联网应用的普及,软件破解技术不断发展并广泛传播。与此同时,各种软件调试破解工具不断升级。传统的保护手段对于破解者来说是相当脆弱的。以致软件盗版、软件非法拷贝等问题日益严峻,也因此软件产品知识产权的保护变得尤为重要。一般来说,如果软件产品能够被专利、版权等方式合法的保护,然而发现攻击软件知识产权的行为难以界定。因此通过技术手段来保护软件开发商的知识产权成为必要的选择。从技术层面来说,我们需要足够的证据来证明软件的开发者对软件的所有权。如果软件版权受到侵害,则可以抽取信息来证明作者对其作品的所有权。软件水印技术[1]就是在这一背景下提出来的,并成为一种很有前景的软件保护技术,有待进一步的研究。

美国在软件水印研究方面的成果最为显著,有多篇介绍动态水印算法[2,3,4]。微软申请了一项专利[5],描述了一种水印技术,以此来防止盗版。1998年,美国版权保护技术组织成立了数据隐藏小组[6],着手制定版权保护水印的技术标准。尽管至今还没有形成数字水印的最终技术标准,但已经明确了用于版权保护的数字水印必须满足的一些基本条件。我国在软件水印的算法研究领域我国已经有不少论文发表[7,8],同时在软件水印应用方面也有探索。

软件水印是密码学、软件工程、算法设计、程序设计等学科的交叉研究领域。软件水印是近年来出现的一种新型的软件版权保护方法。它在软件产品中嵌入版权保护信息和身份认证信息,并通过检测出版权保护信息和身份认证信息来确认对产品的版权拥有,防止软件盗版和非法拷贝。本文根据PE(Portable Executable)文件格式的特点,提出了一种较好的嵌入版权信息的策略,并且对版权信息进行加密处理,增强了信息的安全性。

1 软件水印保护版权原理

水印是信息隐藏的有效手段。软件水印也继承了水印的这一特点,具有信息隐藏的功能,只是信息隐藏的场所不是媒体而是软件。软件水印保护软件版权的问题就是利用了水印的信息隐藏功能,其过程可以描述为:水印信息设计加密、嵌入、检测。作为版权保护的水印应该包含软件的作者,公司等版权信息。当然可以将其他的一些重点信息也合并到水印中。在设计水印信息时对其加密,可以防止水印信息遭到破坏或者修改。

根据软件水印的分类,对软件版权进行保护,可以采用动态软件水印,也可以采用静态软件水印的方法。如果选择前者,那么程序开发过程中,选择一种动态水印算法,和正常的软件模块一起编写、编译。完成后的软件程序执行过程中,就可以验证水印的存在。

对于静态软件水印一般软件版权信息都是保存在源代码中,而版权信息一般是在软件设计好后确定下来的,如果采用源代码方式把版权信息嵌入不便推广为一般方法。因此那种在源代码中保存水印信息的方式需要改进。这里改进水印的嵌入载体为PE文件,即在编译成功后的可执行文件中。水印的检测过程与水印的嵌入是可逆的,如果嵌入中采用了加密处理,则在检测时还要有解密过程。通过检测水印有无及水印内容可知该软件的版权归属。具体步骤如下:

1)生成软件水印信息W。

2)将软件水印信息W加密处理生成W′。

3)确定软件水印信息的嵌入位置,按照一定的策略写入PE文件的空余存储位置。

4)提取PE文件中的水印密文W′。

5)解密W′,验证PE文件的版权信息。

在软件水印保护版权的过程中最关键部分应该是两个方面:一方面是是水印信息在PE文件中的嵌入位置;另一方面水印信息的设计与嵌入策略的设计。下面将对这两方面作详细讨论。

2 PE格式及水印嵌入位置分析

PE文件是目前微软Windows操作系统的可执行文件。代码编写、编译、链接后的可执行文件都以PE文件格式存储。与PE文件相关的变量和数据结构定义在WINNT.h中[9]。水印信息嵌入PE文件中有一个基本要求,就是不能影响软件的执行。基于这一原则,水印信息只能嵌入PE文件中非程序数据区,这里有两种方案:一是利用现有的PE文件中的空余区域,二是在PE文件末尾添加新节。

2.1 PE文件现有的空余位置

PE文件在磁盘当中是根据File Alignmet对齐之后存储的。File Alignment值为0x200,因此PE文件节间的空余空间(R)范围是:0≤R<0x200。实际情况是PE文件.text,.data,.rsrc等节都存在大小不等的空间空余。需要指出的是在IMAGE_SECTION_HEADER结构中,有三个域:Virtual Size,Size Of Raw Data,Pointer To Raw Data[10]。

1)其中Virtual Size:标识该节的实际大小,没有经过Section Alignment或者File Alignment对齐的大小。

2)Size Of Raw Data:标识该节在文件中占据的大小。通常情况下Size Of Raw Data大于Virtual Size。

3)Pointer To Raw Data:标识该节在文件中的偏移位置。

综上分析:对于每一节,从Pointer To Raw Data位置到Pointer To Raw Data+Size Of Raw Data–Virtual Size就是该节在磁盘存储中空余的部分。

为了增强隐蔽性,防止探测程序清除隐藏在PE文件中的信息,软件水印信息在被嵌入PE文件之后可以把Virtual Size的值修改为Virtual Size与水印的长度之和。

2.2 构造空余位置

在PE文件末尾添加一个新节构造空余空间:包括节的PE文件头信息,节内容。最后修改PE头部信息。

2.2.1 构造IMAGE_SECTION_HEADER信息

1)Name:任意少于8个字节的字符串。可以为空。

2)Virtual Size:即节内容的实际大小,节的内容是根据具体应用而来

3)Virtual Address:原PE文件最后一节的Virtual Address加上最后一节(Virtual Size%Section Alignment+1)*Section Alignment。

4)Size Of Raw Data:新节的(Virtual Size%File Alignment+1)*File Alignment。

5)Pointer To Raw Data:原PE文件最后一节Pointer To Raw Data+Size Of Raw Data。

6)根据需要设置新节的Characteristics。

2.2.2 修改PE文件IMAGE_FILE_HEADER结构

1)Number Of Sections加1。

2)Size Of Image加上新节的大小。

3 版权保护水印设计与实现

3.1 软件水印信息的生成

由于PE文件的空余存储空间并非连续分布,所以软件水印信息可能大于每一个空余存储空间,而又小于它们的总和。所以软件水印信息需要被切分。当软件水印信息大于空余存储空间之和时,嵌入软件水印的办法只有在PE文件末尾添加一个新节了。

综上分析,软件水印信息可能被切分,可以设计软件水印信息由两个部分组成:软件水印信息主体(body)与软件水印信息尾部(rear)。信息的rear部分不会被切分,并且会被嵌入到每个空余存储区,备份rear部分便于水印信息的提取。

3.1.1 软件水印信息主体

本文是通过软件水印技术来实现软件版权保护,所以按设想水印信息主要应当包括软件的作者、版权所有、版本号、日期等等。水印的body部分根据需求,也可以设计为其他内容,大小任意。本文将水印body部分定义为结构体:

3.1.2 软件水印信息尾部

由于PE文件的空余存储空间分布于每个节的尾部,所以在提取水印信息时,先读取水印尾部比较方便。水印尾部大小固定,这样如果某个空余存储空间小于尾部大小,那么该空余空间不嵌入软件水印信息。

水印尾部具体内容包括:水印信息固定标识为“SW�”。SW为Software Watermarking的缩写。水印信息分割后存放的位置信息,即存放的水印数据片段的文件偏移地址及其大小。结构体定义为:

3.2 水印嵌入及其提取

3.2.1 水印的嵌入过程

嵌入水印的过程如图一所示,需要说明的是:

1)水印body部分进行加密处理,加密算法可以选择任意一种,本文以DES对称加密算法为例。加密生成的密钥写入文件保存。

2)无论水印的body部分是否被切分,水印的rear部分都应当写入每个具有足够大空余的节。这样起到备份水印嵌入位置信息的作用。

3)水印body部分的切分是根据各节的空余存储空间来定。所以大小不固定,各部分嵌入的位置被记录在水印的rear部分。

3.2.2 水印提取过程

首先从各个节的末尾读取水印rear大小的数据块。验证数据是否为水印的rear部分。水印rear部分由标识为“SW�”。

然后读取rear部分记录的每个节被嵌入的水印片段的位置及其大小。继而读取加密后的水印。将body部分拼接起来。

对body部分的数据进行解密,验证版权所有。

3.3 实验结果

算法实现平台:Microsoft Windows Xp Sp2,512MRAM.Microsoft Visual C++7.0。而此处水印body内容设计为COPYRIGHT_OWNERSHIP结构体。autor Name为:“XXX”;company Name为:“版权所有:Powered By XXX company”;date为:“2009-2015”;Version为:“Version 1.0”。COPYRIGHT_OWNERSHIP结构体大小为0x0055。通过DES加密后大小为:0x0058。

实验1以Windows任务管理器为例进行分析和水印的嵌入,taskmgr.exe版本号为5.1.2600.2180。

taskmgr.exe共3个节,其中.rsrc节Pointer To Raw Data是0x00014a00,Size Of Raw Data是0x00009600,Virtual Size是0x00009454,其空余存储空间最大为:0x01ac。.text节的空余存储空间为0x0112。水印body嵌入的位置是.rsrc节Pointer To Raw Data+Virtual Size=0x0001de54。水印的rear部分同时也备份到.text节中。提取解密后验证有效。

实验2是以金山词霸2007为例,进行分析并嵌入水印。本机的金山词霸2007被加UPX壳,节头信息被修改,Size Of Raw Data显示比Virtual Size小。所以根据算法流程,只有添加一个新节实现水印的嵌入。

通过分析,本机的金山词霸2007经加壳之后有三个节:UPX0,UPX1,与.rsrc三个节。.rsrc节Size Of Raw Data:0x00013600,PointerTo Raw Data:0x000ac800,所以我们添加的新节的文件偏移位置Pointer To Raw Data是:0x000bfe00。水印嵌入信息与提取验证一致。

4 总结

实验表明,将水印信息嵌入节的空余存储空间之后,再修改节头的Virtual Size以及Size Of Raw Data等信息。水印能够实现很好的隐蔽性。如果水印信息是嵌入到一个新建节当中,最好把所有的节的节名修改。或者修改掉节头信息,实现较好的隐蔽性。

本文利用PE文件自身固有的空余存储空间或者构造空余空间实现对水印信息的嵌入,同时水印信息得到加密保护,不容易被攻击者发现。需要说明的是本文提供的方法只能确认软件版本的拥有权,不能防止个人用户非法使用。

参考文献

[1]张立和,杨义先,钮心忻.软件水印综述[J].软件学报,2003,14(2):268-277.

[2]Palsberg J,Krishnaswamy S,Kwon M,et al.Experience with software Watermarking[C]//Proc.Of ACSAC'00.New York:ACM Press,2000:308-316.

[3]Cousot P,Cousot R.An Abstract interpretation-based Framework for Software Watermarking[C]//Proc.Of POPL'98.New York:ACM press,2004:173-185.

[4]Nagra J,Thomborson C.Threading Software Watermarks[C]//Proc.Of IH'04.Toronto,Canada.2004:208-233.

[5]Burns.Method for watermarking computer programs[P].American Pat7231524.2007.

[6]王贤德,王伟超.软件版权保护技术研究[J].软件导刊,2008,7(7)30-31.

[7]殷柯,杨旭光.基于Shamir门限和分支结构的动态水印方案[J].吉林大学学报(增刊),2008:221-225.

[8]罗养霞,马君,等.基于门限方案的动态图软件水印算法[J].计算机工程,2009,35(1):153-155.

[9]吴振强,冯绍东.PE文件的信息隐藏方案实现[J].计算机工程与应用,2005(27):148-163.

[10]徐晓静,徐向阳,等.PE文件资源节的信息隐藏研究与方案实现[J].计算机应用,2007,27(3):621-623.

软件版权保护 篇2

非经xxxxxx授权许可,不得将之用于盈利或非盈利性的任何用途。

为适应实际的计算机应用环境,对其功能、性能、界面,可以进行必要的修改 ,但不得去除xxxx Version xxx的版本标示;未经xxxxxx书面 授权许可,不得向任何第三方提供修改后的软件。

使用该软件必须保留xxxxxx的版权声明,将该软件从原有自然语言文 字转换成另一自然语言文字的,仍应注明出处,并不得向任何第三方提供修改后的软件。

不得有其他侵犯xxxxxx软件版权之行为。

计算机软件的保护策略 篇3

软件最终用户的决策

软件作为一种商品,其需求量取决于市场。在整个市场上,对于软件的需求是通过把每个消费者的需求加在一起得到的。因此,软件企业在打击盗版软件之前,必须分析市场,掌握消费者的需求,从消费者的个人决策入手。

对于一个需要使用某种软件的用户来说,获得软件的途径至少有两种。一种途径是使用人向软件权利人支付一定的费用来获得软件的使用权,即通过交易获得。交易的发生是因为交易双方都能从合作行为中获得利益。另一种途径就是使用盗版软件,即以侵权的方式来获得软件的使用。盗版的发生是因为无法达成协议。许多侵权行为是在谈判失败后发生的。例如,A同B谈判取得某软件的使用权,A愿意支付10元,但B愿意交易的价格为200元,AB双方都互不相让。如果谈判继续进行,其交易成本将会很高,结果AB的交易无法达成,于是A就非法复制了B的软件或购买盗版软件。因此,盗版软件发生的原因是当事人之间的交易成本太高,不能通过交易的方式获得。

虽然盗版软件比通过交易获得的正版软件支出的费用要低,但两者的收益毕竟不同。购买复制品或通过非法复制能够使用他希望的软件的人,会考虑正版软件的服务的效用以及使用非法盗版软件可能增加的费用。例如软件升级后,无法获得软件商的升级服务,或者当软件的功能发生故障时,他要恢复功能所必须支出的重新购买的费用。在中美知识产权谈判的换函以及我国国务院办公厅1999年转发的通知中,都明确规定“任何单位在其计算机系统不得使用未经授权的计算机软件”。这就意味着使用盗版软件的最终用户,也面临着承当侵权责任的风险。对于一个需要使用软件的人,必须作出自己的决策。

消费者在选择是购买正版软件,还是购买盗版软件,在信息充分的条件下,会根据市场和自己的经济情况作出自己的决策。当正版软件与盗版软件价格之间悬殊较大时,即使购买盗版软件存在的风险,用户也会选择盗版;当正版软件与盗版软件价格之间悬殊不大时,理性的用户会选择正版软件。消费者可能作出的决策,是软件提供商反盗版决策是否成功的关键。

当某种软件只有一个供应商时,他就会处于垄断地位,尽管这种情况的确很少。垄断者在经济生活中处于优势地位。因为他知道在排他的权利状态上没有他的替代者和竞争者,可以以较高的价格和低于竞争市场的产量,获得垄断利润。企业经营战略的目的在于是公司与市场需求变化之间保持动态的协调,而这种协调由于竞争对手的介入而变得很难。如果竞争对手向市场提供更优的产品,那么软件提供商就会持续处于不利地位;如果软件提供商向消费者提供的软件与竞争对手雷同,而消费者却无法分辨各自的软件优劣,其结果很可能是一场价格战。一个成功的经营战略必须确保自己的实力与消费者需求之间,能够形成一个压倒竞争对手的更好而且更强有力的协调。但计算机软件行业与其它商品不一样的地方在于:软件凝聚了软件开发者的智力创造,而现有技术却能非常完美、廉价的复制。软件提供商不仅必须面对竞争对手的挑战,还必须谨防盗版软件强占市场。假定某一时刻对某种软件的需求量是恒定的,所有的软件消费者都是理性的,购买正版软件,那么所有的消费者都必须到软件提供商处购买。软件提供商就处于垄断地位,软件使用权的价格是没有弹性的,不论消费者的需求量是多少,软件的价格都是不发生变化的。盗版软件的出现打破了这种平衡。消费者在购买商品时,都需要成本。在功能上,盗版软件与正版软件几乎相同,具有可替代性;而在价格上,盗版软件要便宜得多。在这种情况下,人们愿意选择使用盗版软件。盗版就还有存在的机会,就仍然会剥夺正版软件的市场份额,减少正版软件的盈利。无奈之中,我们还是会选择盗版。因此,软件提供商应采取积极行为来打击盗版软件。

企业软件保护策略

软件市场不同于其它商品市场,盗版软件已经成为阻碍我国软件业发展的主要障碍。打击盗版软件,保证正版软件的市场占有率,是所有软件提供商的共同目标。软件盗版在全世界都是十分普遍的现象,伴随着软件业共同发展。但软件盗版是非法的,与正版软件本不在同一起跑线上。在我国由于种种原因使得盗版软件公开化,甚至趋向一种“合理化”,满足了没有足够经济能力的消费者的需求。但软件盗版不是正常的市场竞争行为,而是侵权行为,以非法行为来获取经济利益。软件盗版市场的存在是因为正版软件供给与市场需求之间存在着矛盾。当正版软件的市场价格与软件需求者的期望价值之间存在着悬殊时,软件用户宁愿冒着各种风险,包括以侵权的方式来获得需求。当正版软件的市场价格与软件需求者的期望价值比较接近时,人们宁愿遵循法律和市场规律,而选择正版软件,放弃购买可能带来各种风险的盗版软件。明智的软件供应商,可能从市场需求的角度选择合适的价格战略,来打击盗版软件。这意味着,软件提供商必须开拓更广泛的市场来弥补低价格的损失。

有些软件供应商不愿放弃高额利润,或对市场需求没有充足信心而担心价格过低可能无利可图,而宁愿选择高额的市场定价。在这种情况下,还有一种可供选择的策略就是通过法律诉讼的手段来保护自己的市场占有率。但任何一种诉讼都是有成本的,需要花费一定的金钱和时间。有时诉讼的成本甚至是高额的。最典型的例子就是爱迪生。他对发明后专利权的重视是少见的。每次觉得外人可能是偷用了他的发明,他就诉之于法。虽然爱迪生的有些发明是价值连城,但他死时并不富有。主要原因就在于他打的官司太多。有人估计,爱迪生所花费的律师费超过了他发明专利所得的收入。当某一软件进入市场后,就会马上面临被盗版的危险。假如防止市场上非法盗版一套软件需要50元,而市场上潜在的非法盗版为1万套,因为有将近一万台计算机需要这种软件,那么防止所需要的侵权费用需要50万元。这是巨大的成本,也许超过了软件开发费用。

软件企业在打击盗版软件时,可以采取的策略有三种:

第一种策略是置之不管,等待行政机关来查处。这是一种比较消极的策略。行政机关基于维护市场公平竞争秩序的需要,主动干预软件市场,打击盗版软件,是其基本职能之一。而与软件市场密切相关的软件供应商不能完全依靠政府行政机关。因为行政机关的人力、精力和财力毕竟有限,不可能查处所有盗版软件。事实上,我国的盗版软件已经达到公开的程度。因此,企业选择这种策略虽然不需要付出保护成本,但其收效甚微,具有太多的不确定性。

第二种策略是通过自己的调查、取证,以法律的途径来保护自己的软件。这是一种增加软件保护费用的策略。我国已经颁布了一系列保护软件的法律、法规,赋予了权利人对软件享有的专有权。但任何法律途径都需要高额的成本。例如用于反盗版的交易费用、律师费用、调查费用,监测费用和诉讼费用。而这种策略的收益完全取决于我国的立法状况。法律赋予软件提供商的权利越多,对盗版软件处罚的越重,则收效越大。如果法律规定,软件的最终用户也承担侵权责任,那么购买盗版软件的最终用户将面临承担法律责任的风险,使用盗版软件的机率就少得多。但在我国现阶段,让盗版软件的最终用户承担侵权责任显然不现实,人们在情感上无法接受。因此,在只能向生产、销售盗版软件的侵权人追究侵权责任的情况下,选择这种策略将付出高额的代价。

第三种策略是以低廉的价格、优质的服务,将盗版软件挤出市场。这是一种遵循市场规律的决策。既然人们选择盗版软件是因为价格原因,那么只要人们买得起正版软件,人们就会远离盗版市场。由于正版软件在品质和售后服务上都有保证,只要买得起,消费者仍会选择正版。也许可以说,盗版在促使软件市场的成熟上“功不可没”,但一个规范有序的软件市场还需有专门的规则去规范,不能“顺其自然”。在我国目前法律环境下,软件企业无法直接追究盗版用户的法律责任,这就意味着正版企业通过诉讼的方式阻止盗版用户几乎不可能。因此,软件提供商在现阶段选择适当的价格策略是明智的。

计算机软件版权保护方法研究 篇4

随着信息技术的发展, 计算机软件产业也迅速崛起,成为社会经济不可缺少的一部分。 然而计算机软件特有的复制成本低、复制效率高的特点,使得软件产品往往成为版权侵犯的对象。 软件盗版、软件非法拷贝等问题日益严峻,因此软件产品知产权的保护变得尤为重要。 为了保护软件所有人的权利,必须从技术、法律、管理等各方面考虑,进行全面保护。

2 技术保护

通过技术手段进行软件保护,防止对软件产品的非法复制和使用,以及对软件产品进行的非法修改。

2.1 硬件加密

硬件加密指使用硬件和软件结合的方式来实现软件的加密。 基于硬件的方法有加密狗、加密锁保护、光盘保护等。 常用的是插在计算机的接口上的加密狗,加密后的软件在执行时需要访问硬件加密狗。 但是,硬件加密成本较高,主要应用于行业用户中,不适用于普通用户,也不利于网上发布软件。

2.2 网络加密

网络加密是利用网络技术对软件进行加密保护的技术。 常见的方法有网络验证等。 网络加密需要将软件运行的重要数据放在服务器上,只有通过联网验证用户注册信息后才能取得这些数据运行软件,它的加密强度较高,但是需要建立专门的服务器网站,成本高。 采用这种加密方法,用户必须在线完成网络验证,在网络不稳定的情况下被加密的软件就无法正常使用了。

2.3 软件加密

软件加密不依靠硬件只使用算法来实现的对软件的保护。 目前常用的有注册验证法、计算机硬件校验法、软件水印保护等。 软件加密的方法相对硬件加密而言成本比较低,但安全性相对也要低一些。

2.3.1 基于注册验证的版权保护

用注册信息实现版权保护,是目前使用比较广泛的版权保护方式。 软件供应商对用户信息进行加密,密文作为注册信息返回给用户。 软件运行时,通过验证注册信息确认软件是否授权,实现保护。

注册信息一般基于软件使用者的用户信息生成,可以是一串序列号或注册码,也可以是一个授权文件或其它存在形式。 在验证比较严格的情况下,用户信息应该包含标志用户唯一性且不可复制的信息,例如计算机的CPU、硬盘等关键部件的硬件序列号等。

对合法授权软件, 软件供应商会提供一个注册文件,该文件包含加密过的用户信息、注册码等注册信息。用户只要将该文件放入指定的目录下, 软件每次启动时,从该文件中读取注册信息并按设计好的算法进行处理,然后与用户输入的信息或注册码进行比较,根据比较结果判断是否为授权软件,如果是则以正版软件模式来运行。

2.3.2 用软件水印实现版权保护

软件水印是近年来出现的一种新型的软件版权保护方法,它在软件产品中嵌入版权保护信息和身份认证信息,并通过检测出的版权保护信息和身份认证信息来确认对产品的版权拥有,防止软件盗版和非法拷贝。

软件水印具有信息隐藏的功能,水印信息可以包含作者、发行商、所有者、使用者等信息,并携带有版权保护信息和身份认证信息, 在设计水印时对这些信息加密,可以防止水印信息遭到破坏或者修改。

软件水印技术包括水印信息的生成、水印嵌入和水印提取三个过程。 根据软件水印的嵌入和提取技术来分,可分为静态水印和动态水印。 静态水印把水印信息存储在可执行程序代码中, 比如放在安装模块部分、指令代码部分,或者是调试信息的符号部分。 软件运行时准确提取软件中的加密水印信息,解密后与原始信息对比,验证软件的版权信息。 动态水印则是把水印信息保存在程序的执行状态中,而不是程序源代码本身。 软件开发过程中,选择一种动态水印算法,和正常的软件模块一起编写、编译。 软件执行过程中要求输入特定的序列,根据输入,程序会运行到某种状态,这些状态就代表水印,通过这些水印验证软件的版权。

2.3.3 基于机器码的软件版权保护

计算机的硬件通常具有惟一的标识, 比如MAC地址、硬盘序列号、CPU序列号和主板等,这些信息被统称为机器码,软件用户一般无法轻易改变它们。

一种方法是用机器码生成注册码。 软件开发人员利用系统提供的接口编程获取机器码,对这些机器码进行组合变换后作为用户注册信息,再对这些注册信息经过加密处理,就能产生与该主机匹配的唯一注册码,把这个注册码放在软件的文件系统中。 软件每次运行时读取计算机的机器码生成注册码,并与注册文件中的注册码进行比对,若有误,软件将被限制使用。

另一种方法是直接用机器码加上软件信息作为验证信息。 软件安装时获取用户计算机系统已经存在的某些特征信息,比如CPUID、BIOS信息、硬盘序列号、硬盘分区信息等, 在这些信息的基础上加入相应的附加信息,如用户信息、软件信息和使用期限等,把这些信息作为一个整体生成MD5 码,用以区别不同的计算机。 为了安全,可以把MD5 码和附加信息用DES算法进行二次加密,密文保存在用户的计算机上。 软件运行时读取并解密密文,与用户计算机的特征信息(机器码)及附加信息进行比较, 确定软件的版权。

3 法律保护

随着社会的发展,对计算机程序软件的保护问题已成为我国乃至世界保护知识产权的重要内容之一。 我国1990 年颁布的《著作权法》规定,计算机软件是受法律保护的作品形式之一。 2002 年,我国颁布了《计算机软件保护条例》,对软件实施著作权法律保护作了具体规定。

软件著作人或软件公司,可以通过申请软件著作权来保护开发的软件产品。 软件版权保护的保护范围非常广泛,对内容没有特殊要求,只要具备一定的独创性,就可以申请版权保护。 在发生软件著作权争议时,《软件著作权登记证书》是主张软件权利的有力武器,请求司法保护的前提。 在进行软件版权贸易时,《软件著作权登记证书》作为权利证明,有利于交易的顺利完成。

如果软件产品思想新颖、技术上有创造性,并且具有实际的经济利益,可以向专利局提出专利申请,实现计算机软件的专利保护。 专利保护的内容比较广泛,能实现对创意、思想及计算机软件特有的源代码进行专利法保护,有利于保障软件开发者的合法权益。

软件开发者根据软件的特点和保护需求,根据版权保护或专利保护的特点,选择合理的保护模式,及时进行版权登记或专利申报。

4 管理保护

计算机软件版权保护还要注意企业内部管理。

首先,计算机软件开发企业内部管理不规范、不严格,软件开发的核心人员离职时,带走核心资料并卖与他人,造成软件核心资料外泄。

其次,软件版本管理不完善。 有的软件开发公司在进行软件升级时,不注意保存原程序版本,从而造成原程序版本外流被侵权。

因此,企业必须加强内部管理,保护好已有的软件产品,规范软件开发的文档管理,与核心技术人员签订任务委派书等, 进一步细化软件开发中的验核程序,同时规范劳动合同。

5 结束语

软件的算法是设计人员的思想火花,并且随着软件功能和规模的增大,软件的开发成本也越来越高。 软件企业为了维护自己的权利, 也是从各个方面加强保护。在技术上进行加密等防止复制,申请版权或软件专利进行维权,在企业内部规范管理防止核心资料外泄等。 作为软件开发或应用人员, 也要尊重别人的劳动成果,不要剽窃他人的作品,维护社会安定。

摘要:伴随软件行业的发展,计算机软件越来越容易受到复制和盗版的威胁。论文分析了成功软件版权保护方法的实现技术,并提出从法律和管理上同时发力,全方位地实现软件版权保护,切实维护好软件开发者的合法权益。

关键词:软件,版权保护,软件加密,软件水印,机器码

参考文献

[1]段刚.加密与解密(第三版)[M].北京:电子工业出版社,2008:102-103,121-126,392-395.

[2]张晓娟.软件水印在软件版权保护中的应用[J].现代计算机,2012(10):24-26.

[3]王贤德,王伟超.软件版权保护技术研究[J].软件导刊,2008(7):30-31.

[4]刘宏申,孙长应.软件水印实现软件版权保护[J].电脑知识与技术,2012(3):1701-1703.

[5]张畅,胡谷雨,倪桂强.基于机器码加密的软件版权保护方案[J].计算机安全,2013(3):46-48.

计算机软件知识产权保护 篇5

计算机软件的知识产权保护是一个不断演进的课题。自从20世纪60年代软件产业.兴起以来,计算机软件被侵权的现象就逐渐凸显。计算机软件的知识产权究竟以何种法律方式保护更为妥善一直是世界各国反复权衡,争论已久的议题。

随着软件产业的迅猛发展,全球贸易的日益繁荣和网络时代的到来,计算机软件知识产权保护模式的研究也要求更加深入,更加迫切。本文试从法理和技术角度出发,结合目前我国和国际上的相关规定,介绍和评析当前几种主要的软件知识产权保护模式,提出构建我国计算机软件知识产权保护模式的基本思路,以求完善我国计算机软件知识产权保护立法,适应国际计算机软件知识产权保护趋势。文献回顾的范围主要涉及2005年至2010年公开发表的论文、出版的教材、专著以及在各种有关科技法的会议上的讲话等。

一、计算机软件概述

(一)计算机软件的定义

在我国计算机软件包括计算机程序及其文档。我国新修订的《计算机软件保护条例》中规定,计算机程序是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列,包括了源程序和目标程序。文档是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等。

(二)计算机软件的知识产权特征

知识产权作为保护智力劳动成果的私权,是无形的财产权。如同物权对人们权利的保护一样,只有将“知识”或者“智力成果”产权化才能有效的保护人类的劳动成果,并为之带来经济利益;才能激发起整个社会的创造欲望,进而推动人类社会的发展进步。按照目前国内主流的学术观点,知识产权具有“无形性”、“专有性”、“地域性”、“时间性”和“可复制性”五大基本特征。计算软件作为为人类的智力劳动成果,毫无疑问应该成为知识产权的保护对象。而且,计算机软件与知识产权的五个基本属性完全相符。但是,计算机软件同时又具有其自身独特的知识产权特征。对于计算机软件基本与独具的知识产权特征分别介绍如下:

1、计算机软件的基本权利特征

计算机软件具有“无形性”。计算机软件的研发思想是计算机软件的“灵魂”,研发人员的智力劳动产生的价值可以用不同的代码作为载体。软件作为一种知识产品,作为智力劳动的成果,其“无形性”是显然的。

计算机软件具有“专有性”。“专有性”是一项具有排他性的权利,即知识产权的有效性是针对所有权利人以外的人。它赋予权利人在一定地域和时间之内“独占权”。计算机软件的“专有性”在其专利权中体现的最为明显。

计算机软件具有“地域性”。计算机软件符合著作权法中作品的定义,因而受到著作权法的保护,其著作权也只能在国内和相关的著作权协议缔约国内受保护。商业秘密保护也是如此。

计算机软件具有“时间性”。计算机软件虽是研发人员的劳动成果,但每个软件无一例外都是借鉴了前人的智力成果。因此计算机软件的知识产权保护期限的设定和传统的知识产权保护对象的保护期限设定的目的是一致的,都是为了既维护权利人的利益又保障社会公众的利益。

计算机软件具有“可复制性”。计算机软件是由计算机语言编写而成的,其“可复制性”是显而易见的,这也是计算机软件最典型的特点。

2、计算机软件独特的知识产权特征

计算机软件作为特殊的知识产权客体,存在着有别于传统知识产权客体的特征:

第一、计算机软件著作权中的财产权具有不完整性。传统的文字作品具有翻译权,如果将一种文字的作品翻译为另外一种文字,需要征得作者的同意并支付相应的费用。但是计算机软件这种数字作品,没有这项权利,不同计算机语言之间的“抄袭”不应认定侵犯著作权。

第二、计算机软件的专利权带有较强模糊性。与传统的专利权客体不同,计算机软件的专利侵权大都体现在无形的计算机语言上。对于实现特定功能而言,相同的计算机语言可以有不同的表达,不同的计算机语言也可以实现完全相同的功能。虽然学界提出了“等同原则”,以期对于计算机语言的“非实质性相似”做出合理的界定,但是因该原则在理论上存在不同的适用原则,因而并没有消除计算机软件专利权的这种模糊性特征。

第三、计算机软件商业秘密保护难度较大。反向工程和开源运动都对计算机软件的商业秘密形成冲击。另外软件的形成过程都不同程度的带有一定的信息,究竟所带有的信息量达到何种程度,才算商业秘密,尚有争议。因此计算机软件的商业秘密的保护难度比传统的商业秘密客体大,很多商业秘密侵权案件都由于举证难度大而败诉。

第四、计算机软件具有作品属性、技术性特征和商业价值,所以计算机软件可以兼有著作权、专利权和商业秘密三种属性。虽然商业秘密需要秘密性构成要件,专利权的取得必须以技术公开为前提,因此同一计算机软件不能享有专利权的同时成为商业秘密的客体,二者不可兼得。但是计算机著作权和专利权及商业秘密都是相容的,这是因为计算机软件作为数字作品,其著作权自完成之时自动取得,是“天然”的,著作权是知识产权最初的形态,是一种“自然权利”,具有“天赋性”。而专利权,需要主管行政机关依法确认而产生即所谓的“行政确权”,商业秘密需要作为秘密信息采取保密措施,因此著作权和这两者均不冲突。

总之,计算机软件符合知识产权的基本特征,具备知识产权的基本属性,但是鉴于计算机软件本身特殊的技术性,又有着与传统知识产权客体不同的内在属性与外部特征。与传统客体的知识产权相比,计算机软件的专利权保护往往更容易“过”,而著作权和商业秘密则更容易表现出“不及”。计算机软件作为高科技产业,其技术更新之快可谓日新月异,计算机软件的法律保护对于传统的知识产权理论提出了挑战。

(三)计算机软件知识产权保护的意义

一套软件的研发需要一些专业人员花费相当多的时间进行创造性的智力劳动,经过结构设计、编写、不断的修改调试,最终达到用户需要的某种功能,实现它的社会价值。而且现在的软件功能越来越强大,结构也越来越复杂,一个大型软件的开发往往通过模块化的创作方式,有人从事整体结构的设计,有人从事具体模块任务的编程,有人从事后期整合和调试。一些大型的商业软件开发都需要一个庞大的团队甚至几家软件公司共同投入大量人力、物力、财力和时间,通过艰巨的创造性的智力劳动才得以实现。所以软件的开发是需要开发者投入相当高的成本的,而他们这样做的动力则源于可预期的更高额的利益回报。

同时,由于和其他知识产品一样,计算机软件可以被剽窃模仿和广泛的无限次的复制,使侵权者能够以几乎忽略不计的成本享受他人的劳动成果,甚至从中赚取暴利。这样计算机软件权利人的利益会受到极大的伤害,势必会打击他们进行新软件开发的积极性。如果我们对计算机软件知识产权保护不力,必然会阻滞了这个产业的健康发展,甚至影响到社会的经济繁荣和科技进步。事实证明,在整个世界范围内,计算机软件知识产权保护问题的普遍性和紧迫性已经愈加明显了。

二、计算机软件法律保护的历史沿革

(一)国际计算机软件法律保护的历史发展

计算机软件的法律保护问题,最初在20世纪60年代由德国学者提出。后来,包括英、美、德等国学者在内的许多国家的学者就此问题提出了多种保护方案。WIPO(World Intellectual Property Organization)也成立了专门的工作小组,于1978年发表了《保护计算机软件示范法条》,对各国保护软件提出立法建议。WIPO还于1983年提出了《计算机软件保护条约》草案,以期建立软件的国际保护制度。但由于多种原因,这些建议和方案最终都未能通过。

最早提出利用著作权保护计算机软件的是美国。美国版权局在1964年表示:“对于计算机程序是否具有版权,这一点尚不能确定,但可以根据现行的《版权法》(即1909年美国版权法)接受计算机程序的版权登记,并让法院去对具体案件中版权的有效性作出判断。”

1972年11月4日,菲律宾在其《知识产权保护法》中,明确将“计算机程序”作为“文学艺术作品”的一类,列入著作权保护的对象,成为世界上第一个在《著作权法》中明文保护计算机程序的国家。

此后,美国于1976年和1980年两次修订著作权法,明确用著作权法保护计算机程序,并结合计算机程序的特点作了一些具体规定。

计算机软件技术、产业的发展及其带来的巨大经济利益,使得软件产业占重要经济地位的发达国家特别是美国,要求其他国家对软件采取保护政策。1986年开始的有关关税与贸易的谈判,虽然当时圆桌协议未最后达成,但有关知识产权的TRIPS协议己实际达成。1991年5月欧共体有关计算机程序保护的指令第1条第1款规定将电子计算机软件作为伯尔尼公约的文字作品保护。1994年的《与贸易有关的知识产权协议》和1996年的《世界知识产权组织著作权条约》都明确规定了计算机程序作为文字作品来保护。

由于计算机软件具有技术性和作品性的双重性质,而著作权法只保护作品的表达,对作品中所蕴含的观念、概念、原理、发现等思想概念则不予保护,这使国际社会在软件保护实践中深感著作权法的不足,于是人们开始重新寻求专利法的保护。

在专利制度建立之初,世界各国几乎无一例外地排除了对计算机软件的专利保护,认为计算机软件属于数字法则或方法,不属于专利法意义上的技术方案。但随着软件技术的迅速发展,自八十年代以来各国对应用软件作为技术方案给予专利保护的呼声增高,尤其是美国在1981年著名的Diamond V.Dieher案(450U.S.175(1981))中,最高法院首次公开了一项计算机程序与硬件结合具有可专利性的判决。1991年,在东京召开的第三次计算机软件法律保护国际会议上,肯定了国际上用专利法保护软件的发展趋势。

总之,计算机软件的法律保护问题越来越受到广泛的重视,同时也得到了充分的保护。

(二)我国对计算机软件的保护

我国的计算机软件立法一开始并未打算采取著作权保护的方式,而是准备采取单独立法的模式,并且也按照这种思路进行立法的起草工作。在1989年的中美知识产权谈判中,中国方面承诺在制定著作权法时,将计算机软件列为著作权法保护的客体。因此,在1990年颁布的著作权法中,计算机软件被列为受著作权法保护的一类作品,同时规定另行制定单独的保护办法。1991年6月4日国务院发布《计算机软件保护条例》。

随着我国的经济、社会、法律、科技的发展变化,《著作权法》和《计算机软件保护条例》逐渐不能满足规范社会行为的需要,特别是我国由计划经济向市场经济的转变,加入世界贸易组织,以及世界经济一体化的影响和信息技术、通讯技术日新月异的发展变化,要求必须更新、修订《著作权法》和《计算机软件保护条例》。于是,2001年10月27日第九届全国人民代表大会常务委员会第二十四次会议通过《全国人民代表大会常务委员会关于修改<中华人民共和国著作权法>的决定》,同年12月20日国务院颁布新《计算机软件保护条例》,1991年的《计算机软件保护条例》同时废止。

期间,我国还制定了一系列相关的法规、规章,签署了有关的国际公约。1991年1月19日机械部颁布实施《计算机软件产品开发的标准化规范化要求》。1992年4月6日机械电子工业部颁布实施《计算机软件著作权登记办法》。1992年9月25日国务院颁布《实施国际著作权条约的规定》。1992年加入《伯尔尼公约》、《世界版权公约》,与美国签订了《中美知识产权谅解备忘录》,并颁布了《实施国际著作权公约的规定》。1994年10月19日国家版权局颁布实施《关于计算机软件著作权管理的通知》,同年全国人大常委会通过了《关于惩治侵犯著作权的犯罪的决定》。1995年8月23日《国家版权局关于不得使用非法复制的计算机软件的通知》规定任何单位在其计算机系统中不得使用未经授权的计算机软件。1995年国务院颁布《知识产权海关保护条例》。1997年10月1日施行的新《刑法》中设立“侵犯知识产权罪”,同时废止《关于惩治侵犯著作权的犯罪的决定》。1999年2月24日国务院办公厅颁布《国务院办公厅转发国家版权局关于不得使用非法复制的计算机软件通知的通知》。1999年3月巧日,第九届全国人民代表大会第二次会议通过,10月1日起施行《中华人民共和国合同法》第137条规定,出卖具有知识产权的计算机软件等标的物的,除法律另有规定或者当事人另有约定的以外,该标的物的知识产权不属于买受人。2002年2月20日国家版权局颁布《计算机软件著作权登记办法》。

这一系列的法律、法规、规章的制定和适用,构成我国软件著作权法保护的基本框架,使计算机软件获得了基本的法律保护。

我国从立法上把软件作为著作权保护客体之一,在制定专利法过程中,对计算机软件能否获得专利采取了极为慎重的态度。在我国随1985年《专利法》一起诞生的《审查指南》中,对含有计算机软件的发明专利的审查条件做了这样的规定,如果计算机软件获得了专利权,就一定是作为硬件的附属物附随硬件所得到的权利,单独的软件是不能获得专利权的。其后,我国分别在1992和2000年两次修改《专利法》,但是在计算机软件专利保护问题上没有太多的改变,基本上保持了原来的立场。随着主要发达国家计算机软件相关发明专利保护的发展,特别是商业方法专利发明和计算机程序载体发明逐渐成为可专利主题,我国计算机软件相关发明可专利性的规定显然已较落后,《审查指南》中的一些规定显得不够深入具体,可操作性不强,缺乏对商业方法和计算机程序载体的可专利性的规定,而实际上我国己经受理了这样的专利申请。

三、计算机软件知识产权保护模式的比较研究

当计算机软件在20世纪60年代出现在市场上时,人们就开始争论应该用什么方式来保护其权利。纵观国际上普遍流行的知识产权保护模式,大致可以分为著作权保护模式、专利保护模式、商业秘密保护模式等不同方式。笔者认为不同的保护模式适用范围不同,保护效果亦有较大区别,下面将分析不同保护模式各自的优缺点。

(一)著作权保护模式

1、计算机软件著作权保护的优势

第一、自动保护,自愿登记

我国《著作权法》规定,计算机软件一旦完成开发,不论其是否发表,均开始受著作权法保护。计算机软件的著作权“自动”生效,对于权利人来讲是非常便捷的。另外以自愿登记为原则的《计算机软件著作权登记办法》实施以来,登记的程序也更为简单、快捷。2008年我国计算机著作权登记量继续保持快速增长,全年登记量是2006、2007两年登记量的总和,全年软件登记总量为49087件,同比增长 91.25%。其中软件著作权的登记量47398件,占软件登记总量的96.56,同比增长93.3%,充分说明了计算机软件著作权的优势地位和不可替代的主流地位。

第二、促进科技进步

由于著作权只保护计算机软件不被他们复制,而不保护计算机程序的总体设计。因此其他开发者能够研究、利用、借鉴已获得著作权保护的计算机软件,并利用其思想、算法等创作新软件,推动软件的整体发展。

2、计算机软件著作权保护的弊端

第一、保护程度低。版权法所提供的保护范围对软件来说是不充分的。从软件的外观上看,可以将软件视为普通的文字作品进行保护。但从实用性角度来说,计算机软件能够与硬件结合实现某种特定的功能,这使得软件当中包含了相当的具有创造性的技术因素。由于版权法只保护作品的表达,不保护作品的“思想”,这实际上抹杀了软件的核心价值。

第二、传统版权法对精神权利的保护不利于软件的发展。软件版权保护中存在着不利于软件发展的因素,主要表现在“发表权”与“修改权”这两项权利上。一方面计算机软件,特别是商业软件其计算机程序当中的源代码不必公开就可享受版权保护,而源代码对于软件技术的进步和交流具有重要的意义。另一方面软件作品的著作权人具有保持作品的完整性,不允许他人未经授权修改的权利。软件合法用户虽然享有一定的修改权,但也仅限于为自己使用的需要而修改,并且不能把修改后的软件提供给他人使用。因此对软件的进一步完善只是软件权利人的特权,其他人未经权利人的同意,即使发现了该软件中存在的缺陷和错误,也不能公开发表自己已经修改后的更加完善的软件作品,这在一定程度上不利于软件技术的交流和沟通,加大了软件开发的成本,从而对软件的发展产生不利影响。

第三、版权保护只阻止了复制,并不能保护软件非法使用。事实上,权利人关心软件的复制也是为了阻止未经授权的软件的使用,软件的核心价值在于使用权。软件只有在使用时才能体现软件的工具性价值,而软件权利人的利益也是通过软件的使用来实现。如果只禁止非法复制,而不禁止非法使用,那么软件开发者的权利就不能得到充分的保障。

(二)专利权保护模式

1、计算机软件专利保护的优势

第一、专利权保护计算机软件的核心内容,也就是软件的总体设计,又称为数据结构。计算机版权保护占优势地位,但计算机软件毕竟不是文学作品,它具有工具性价值,运行它能够实现技术性的效果。专利可以保护软件的创意,并且保护由这个创意编写的计算机程序的源代码。

第二、专利保护具有独占性,排他性。一旦发明创造获得专利权,其他的相同发明不再受保护,甚至不能使用,这对强调保护计算机软件思想即软件构思技巧、技术方法的计算机软件开发者是十分重要的。

第三、专利保护能够推动软件产业的快速发展。专利法要求专利人公开其智力成果,可以让公众能方便地借鉴和创新,避免软件重复开发给社会带来的人力、财力资源的浪费。同时也可以避免权利人为保密而花费的大量精力和费用。

第四、能够为权利人带来可观的利润回报。

2、计算机软件专利保护的弊端

虽然用专利保护计算机软件具有其可行性,但是专利法对所要求保护的对象有严格的标准。专利保护的弊端:

第一、审查难度大,审查周期较长。首先发明必须具有新颖性、创造性和实用性。软件必须是“首创的”才会具有新颖性,这对大多数软件而言难以达到。每年软件生产数量巨大,如果大部分申请专利,将会增加审查的难度和审查周期,往往会达到两年以上。也许专利申请还没审结,其软件的畅销期已经过去。

第二、专利的公开性与软件开发者的意愿背离。依专利法,专利申请被受理后,要进行早期公开,计算机程序方便模仿和复制,并且发现侵权也比较困难,因此和其它技术相比计算机程序公开更容易受到侵害,这就意味着专利权人难以从根本上保护自己的软件专利权。

(三)商业秘密的保护模式

1、商业秘密保护的优势

和专利保护相比,商业秘密保护具有得天独厚的优势。权利人申请专利是为了防止日后他人也有同样的发明,但是自己没有申请专利,就会被后发明者在申请专利上占先。如果企业确信别人不依赖自己就不可能独立搞出同样的发明,那么就可以选择商业秘密的途径保护自己的成果,而无需申请专利。可见商业秘密保护的优势在于:

第一、秘密性。计算机软件的源代码往往只有软件的开发者才有,保密性很强。

第二、便于维权。因为知晓商业秘密的范围较小,往往是公司的高层员工或,合作伙伴。因此在打击侵权方面,商业秘密也具有其他保护手段所没有的优势。

第三、时间上的无限性。只要权利人采取的保密措施足够不被公众知晓,就可以一直享有该商业秘密。

2、商业秘密保护的弊端

第一、成本较大,需要制定严密的保护措施防止泄密。软件的知情者包括软件的开发人员、使用者和知情的其他人等,软件所有人为了保守商业秘密,需要与每一位知情者签订保密协议,给付高额费用以阻止其泄密或跳槽。

第二、不具有排他性。不能阻止第三人通过自行开发、反向工程产生同样功能的软件。

(四)对著作权、专利权、商业秘密的综合保护比较研究

尽管我们已经对计算机软件的三种保护方式进行了论述,但是在确定哪一种方式对于计算机软件的保护更为适当时,应当对三种方式进行综合比较分析。

1、从保护期限上分析

专利法保护的时间最短,著作权法保护的时间较专利法保护长,商业秘密的保护期限则没有时间限制,只要权利人对其商业秘密采取了保密措施,就可以无限期地享有权利。

2、从保护内容上分析

专利权保护的内容最窄,仅保护计算机程序与其他要素、设备共同结合而成的技术方案。著作权保护的范围较专利权保护为宽,既可以保护计算机程序,也可以保护计算机软件的文档。商业秘密保护的范围最宽,既可以保护计算机程序,也可以保护文档,还可以保护不受专利权和著作权保护的算法、流程、计划等智力活动的方法。

3、从独占性上分析

专利权保护具有最强的独占性,任何人不经专利权人许可,不得实施专利方法或制造专利产品。而著作权法则具有较专利权弱但较商业秘密强的独占性,著作权人有权禁止他人复制、抄袭自己的软件,即使在他人侵权后,也不妨碍其对此后的侵权人追究侵权责任。而商业秘密则一旦被泄露出去,无论权利人是否追究了侵权人的责任,都会导致商业秘密不复存在的可能,使其可能无法追究此后使用其商业秘密人的责任。

4、从创造性上分析

专利权保护要求计算机软件具有“首创性”,这就是我国《专利法》中的“新颖性”要求和“申请在先的原则”。著作权保护只要具有“独创性”即可。

通过上面的综合比较,我们可以看出,尽管从总体上讲对计算机软件采取著作权保护相对于专利保护和商业秘密保护来讲有优势,但如果从某个局部上看,对计算机软件采取专利保护或商业秘密保护也具有著作权保护所不具备的优点。因此,如何有效发挥各种保护的优势,以使计算机软件能够得到全面有效的保护,就是权利人所必须面对的问题。

四、构建我国计算机软件的知识产权保护制度

通过对计算机软件知识产权法律保护手段的利弊分析,我们可以看到由于计算机软件的工业产品特性,所以决定了其保护手段的特殊性。其实,近年来日本、韩国、巴西等国都曾尝试对计算机软件保护专门立法。通过专门立法来保护计算机软件,既能结合著作权法、专利法和商业秘密法保护的优点,又能避免它们各自固有的缺憾。这种立法体例代表了一种方向,但是目前还未能得到广泛的共识,同时也缺乏相应的国际条约体系作为支撑,但作为一种新的解决之道,笔者仍然看好这种保护手段。

同时我们也应该认识到:软件的专门立法虽然是最完美的但却不是最实际的。出于法律秩序的求稳性和保守性,目前,在软件著作权保护占主导并不断扩大专利保护的国际大环境下,在全世界范围内推行一种全新的软件专门立法保护制度也是不现实的,我国也不可能另辟蹊径。从上文叙述中我们也可以看到,我国也是在著作权法下对软件加以保护的,同时辅之以专利法、商业秘密法等。因为如果把计算机软件完全纳入著作权法保护体系,将会“从根本上破坏著作权的理论基础”;而如果把它完全纳入专利法保护体系,也势必会降低专利法原有标准。因此,鉴于计算机软件的复杂特性,现有的任一知识产权法律都不可能对计算机软件提供充分的、全面的、彻底的保护。目前,在软件专门立法未果的情况下,对现有的知识产权法律制度进行整合以实现对软件的适当、充分的保护不失为一个不错的选择或者说是一种权宜之计。结合我国的立法和司法现状,我们应建立起以著作权法为主、专利法、商业秘密法等法律为补充的综合法律保护体系。这一法律体系要达到的目标是既能弥补单一法律保护的不足,又能达到各种法律相互配合运作,这样软件权利人就可以根据自己的需要选择一种和多种保护方式维护自己的合法权益。

由于著作权法的门槛相对较低,因此开发完毕投入流通的绝大多数计算机软件都可以获得著作权法的保护。结合我国的立法和司法现状,当前和今后的相当长时期内,加强软件的著作权保护始终是我国软件知识产权保护的重点。但是著作权法对软件提供的保护是不充分的,它只能在软件流通这一环节有效抑制非法复制,却不能在软件使用这一环节有效保护权利人的利益。而专利法对软件思想的保护有利于权利人对软件使用的控制,赋予权利人对软件使用较强的垄断权,这在一定程度上与软件的功能性相适应。但是,与传统的专利技术相比,计算机软件的创造性一般是很低的,尽管在审查软件专利时可以对“三性”、权利要求等许多方面的标准予以适当的调整,但即使这样,也仅有极少数计算机软件能够获得专利法保护。因此,对于大多数计算机软件而言,著作权法仍是最主要的保护方式。对于技术构思达不到专利法标准同时著作权又无法对其提供有效保护的软件而言,商业秘密法保护不失为一个很好的选择。事实上,在发达国家的实践中使用的较多的也是这种方法,它通过合同约定对软件中的技术秘密提供商业秘密保护,同时也不需履行任何手续,如果一方泄露、偷窃了商业秘密或利用了不正当手段时,被侵权方可以拿起反不正当竞争法来维护自己的合法权益。因此,对软件企业而言,应逐步加强商业秘密法保护,建立健全有关制度,构筑有效的商业秘密保护机制。但是,这种方法也只能在小范围内使用,一旦软件被大量销售,被反向工程的可能性增大,而商业秘密法并未规定对反向工程的禁止,因此它完全可以规避软件开发商所采取的商业秘密保护措施。

总之,软件的多种法律保护方式不是互相矛盾的,而是相辅相成、互相配合的。采用多种法律保护方式相结合的模式有利于权利人根据软件开发、流通、使用的不同阶段根据不同的保护需求采取不同的方式保护软件。当然这种模式可以说是软件专门立法前的过渡阶段,不可否认,软件专门立法仍是软件知识产权法律保护的未来发展趋势。

五、结论

计算机软件的知识产权保护作为知识产权学界的一个年轻的话题,与计算机软件技术自身的发展及一个主权国家软件产业的发展状况息息相关。有别于传统的知识产权客体,计算机软件本身具有的较强的技术性特征,在司法实践中成为不同的传统知识产权客体时会表现出不同的无奈。笔者认为应该整合现有的法律资源使其发挥更大的功效,并针对计算机软件不同的内在属性和外在特征,综合考虑其保护成本、保护效果及知识产权的正当性等因素提出相应的完善措施。

计算机软件的专利保护探讨 篇6

【关键词】计算机软件 版权保护 专利保护

【中图分类号】G 【文献标识码】A

【文章编号】0450-9889(2016)02B-0140-03

计算机技术的实现以计算机硬件和计算机软件为基础,二者相辅相成、缺一不可。计算机硬件可以与传统产品同等看待,但计算机软件则有着自身的特殊之处,其特殊性使得其在法律保护问题上让人们争论不休。美国是计算机和计算机软件的诞生国,目前也是世界上最大的软件生产国,它在计算机软件知识产权领域内的立法和司法活动会影响整个世界。从美国计算机软件的法律保护历程来看,软件是否具有可专利性,是否应当用专利保护计算机软件,显得不是很重要。为此,计算机软件的专利保护问题已经成为目前国际上讨论的一个热点话题。

一、计算机软件的概念与特征

计算机软件(Computer Software)是指计算机系统程序及其相关的文档,其中程序是计算任务的处理对象和处理规则的描述,文档是为了便于了解程序所需的阐明性资料。

计算机软件在表现形式上具有作品特征,而在功能上却具有工具特征,可见,计算机软件具有作品和工具双重特征。

二、我国计算机软件法律保护现状

随着计算机软件行业在我国的迅速发展以及应用,我国对计算机软件的保护给予了高度重视。既要保护我国公众及软件企业的利益又要考虑国际大环境的状况。

(一)计算机软件以版权保护为基本保护方式

计算机软件表现形式上具有作品特征,在功能方面又具有工具产品特征,作为作品应当受到版权法保护,作为工具我们可以探讨它的专利保护问题。

1.计算机软件版权保护的优势

对计算机软件进行版权保护已经成为国际潮流,经过多个国家几十年的实践表明,用版权法保护计算机软件是很有成效的。计算机软件版权保护的优势有如下几点:

(1)对软件权利人利益的首要威胁是擅自复制其计算机程序代码和擅自销售计算机软件的复制品,而版权法正是制止这种侵权行为最适合的法律,其版权保护是最基本的知识产权保护。

(2)各国法律和国际条约基本上都把计算机软件列为版权法的保护客体,这样就保护了软件权利人的最基本的利益。

(3)软件版权的取得比较容易。

2.计算机软件版权保护的弊端

由于计算机软件具有双重性,使得计算机软件的版权保护存在一些弊端。

(1)版权所保护的作品通常是内心思想感情的表现,供他人阅读或欣赏以满足他人的一种精神需求,其目的是促进文化的发展,而计算机软件不论其程序还是文档都不符合这一点,都是为了实现某种特定功能而不是供他人欣赏之用,其目的是促进经济的发展,很难说它是作品。

(2)在版权中“改编权”的适用范围很广,这种“改编权”用于计算机程序时必将妨碍软件行业的健康发展。

(3)软件的发展也在一定程序上依赖于对已有的成果的借鉴,太长的保护期不利于软件行业的发展。

(4)版权只保护“表现形式”,并不保护“构思”本身,计算机软件程序的设计属于构思,但得不到版权保护,而在实际中却存在着侵犯他人程序设计构思的情况。

(二)计算机软件的专利保护

计算机软件是否应当用专利加以保护的问题在世界各国闹得沸沸扬扬,美国虽然未明确把计算机软件专利保护写进成文法,但在实际中美国是承认了软件的专利保护的,并且这种专利保护力度在加大,保护范围在扩大。我国也紧随世界潮流,在以版权保护计算机软件为基础下,并不排除计算机软件的专利保护。2010年2月1日起施行的新的《专利审查指南》同样在第九章规定了计算机软件的专利保护的范围。

该章审查基准中提到五种类型的计算机程序属于专利保护范围的情况,分别为:

(1)涉及整体既包含智力活动的规则和方法又包含技术特征的计算机程序发明。

(2)涉及对计算机外部或内部对象控制或处理的计算机程序发明。

(3)涉及工业过程控制的计算机程序发明。

(4)涉及处理外部数据技术的计算机程序发明。

(5)涉及改善系统内部性能的计算机程序发明。

以上五种情况的计算机程序可以作为发明而申请专利,从而受到专利法保护。

三、计算机软件专利保护的可行性

只要掌握了一项软件的设计,软件开发人员就不难编写出功能相同或相似的程序代码,这在软件界是公认的。因此软件权利人往往不仅要求自己的软件的表现形式不被擅自复制、传播,而且希望自己的软件中的创造性设计或者设计中的一些关键的创造性成分得到法律保护而不许他人擅自使用,这种想法存在一定的合理性。

(一)计算机软件程序算法的可专利性

计算机软件程序算法是指对数据进行的一串处理步骤,是对一定的数据结构进行一系列的操作,以解决特定的问题的方法和过程,是计算机软件程序设计构思中的至关重要的一部分。从形式上来看,一个抽象的程序算法被界定为没有任何物质实体的纯粹的逻辑似乎仅仅是一种智力活动的规则和方法,然而软件在使用中通过对这种智力活动的规则和方法即算法的具体利用,并通过算法的运行最终使得软件获得了明确的技术效果,完成了明确的具体功能。可见程序算法往往是用来解决特定实际应用问题的技术性规则,计算机软件算法是一个计算机软件技术方案的重要组成部分。在这种情况下,把算法与数学公式,算法与智力活动的规则与方法,他们之间划等号确有不妥之处。因此,把可以解决特定技术问题的算法形成一种技术性方案纳入专利保护范围也是具有一定道理的。

(二)计算机软件拥有技术性方案的可专利性

专利法所保护的发明,是指对产品、方法或其改进所提出的新的技术方案。这种新的技术方案必须是具体的,所谓“具体的”是指发明必须能够实施,能够达到一定效果并具有可重复性。

可见发明与技术密不可分,技术最终表现在产品实用工具身上,这一制度创设的本意就在于鼓励和促进科学技术进步,促进社会发展。

从软件的研发过程来看,这一过程也是软件“产品”的生产过程,软件的程序设计的完成形成了一整套软件或软件的某个重要功能,这也就形成了相应的技术方案,通过软件的运行实施,也就能够产生明确的技术效果。

现在大型计算机软件的研发普遍采用了软件工程方法,也就是将一个软件的研发过程当作一项工程来看待,经过工程的逐步实施最终生成软件。软件工程把软件研发过程划分为以下几个阶段:

(1)软件的可行性研究阶段,其目的不是解决问题,而是确定用最小的代价在尽可能短的时间内解决问题。

(2)需求分析阶段,其目的是知道最终面向的用户有哪些具体的需求,确定软件到底要做些什么。

(3)系统设计阶段,包括总体设计和详细设计阶段,在此阶段要用到形式化方法,所谓形式化方法就是描述系统性质的基本数学的技术,这个阶段也就是解决问题的算法攻艰阶段,是最能体现计算机软件构思的阶段。

(4)系统实现阶段,此阶段包括编码和测试两大部分,只要做好了前几步尤其是第(3)步,此阶段对于软件开发人员来讲是比较轻松的。

(5)系统验收与维护阶段,计算机软件在此阶段已经被开发成一个独立的软件产品。

在这一系列研发过程中,最重要的是第(3)阶段,此阶段的设计通过应用某种算法形成了一套解决具体问题的技术方案,而第(4)阶段则通过编码方式将某种技术方案形式化。现实中某些人或单位通过复制第(4)阶段开发的部分代码来获得他人的技术方案可以考虑是否侵犯了版权,但归要结底是这种复制或者通过某种方法变相抄袭,其实是侵犯了第(3)阶段的算法或者说构思,也就是侵犯了他人的技术性方案。

由此可见,计算机软件程序设计中的算法就是计算机软件的构思,它是一种具体的技术性方案,不然的话不可能依据它设计出特定功能的软件。计算机软件自身具有实用工具特征,也具技术特性,这就为软件的专利保护提供了必备的法理前提。

四、计算机软件专利保护的对策

前面我们已经探讨过计算机软件具有作品和工具双重特征,具有作品特征的部分可利用版权法加以保护,具有工具特征可表现出技术性方案的部分应当采用专利法加法保护。计算机软件的版权保护已经比较稳定比较成熟了,而计算机软件的专利保护则起步较晚,并且还处于探索之中,将来也许有一天计算机软件的专利保护可以与计算机软件的版权保护并肩前行。在此笔者对计算机软件专利保护提出几条建议:

1.不应当只一味追求计算机软件的专利保护而忽略甚至排除计算机软件的版权保护。计算机软件的版权保护是最基本的法律保护,而计算机软件的专利保护是计算机软件版权保护的好的补充,是计算机软件发展的必然趋势。

2.针对计算机软件的特点制定出科学详细的申请条件,明确审查标准和申请流程。在我国由于计算机软件专利申请条件不够清晰,导致很多真正的实用软件得不到尽快的申请,同时专利审查部门现在还缺乏对计算机软件专利申请而制定的专门的规则,使得计算机软件专利数量很少。因此有必要对计算机软件专利申请制定出详细的规定。积极借鉴国外先进经验,提高我国计算机软件专利申请的规范性和准则标准,以便于与国际形成统一的审查标准。

3.要缩短计算机软件申请专利的审查时间,提高计算机软件专利申请效率。在我国,专利的申请审查需要等待相当长的一段时间,然而计算机软件技术进步飞快,过长的等待时间会导致许多软件的技术在等到专利申请过程中,已经不再新颖甚至过时,错过了最佳的研发时期。

4.要缩短计算机软件的专利保护年限。当前,计算机软件技术迅猛发展,软件技术每隔几年就要更新换代一次,而我国专利法中规定的专利保护期长达 20 年,已远远超过了计算机软件生命周期,这不利于在它的生命周期内发挥其自身应有的作用。

5.明确“计算机程序算法”和“智力活动的规则和方法”区别标准,明确计算机软件的技术性方案的认定标准。

6.将计算机软件作为发明专利加以保护并明确写入下次修订的专利法。计算机软件保护条例是以著作权法为前提的,但现在专利法中并未提及计(下转第153页)(上接第141页)算机软件可以进行专利保护。可是算不上法律渊源的《专利审查指南》却允许计算机软件在满足条件的情况可以作为发明专利而申请,给人一种审查指南有越权行事的可疑行为,也无法体现计算机软件专利保护的完善性。

7.目前我国还不是计算机软件开发大国,但是,我国软件企业在迅速成长发展,不断追赶软件开发大国,计算机软件专利保护的必然趋势是不可否认的。

计算机软件的保护应当以版权保护为基础,以专利保护为前导,版权保护主要防止软件复制等侵权现象,专利保护主要防止软件技术抄袭等侵权行为。目前我国计算机软件产业已经为成为我国衡量国家的综合实力的一个标准,关系到国家安全和国民经济发展,计算机软件的法律保护措施应当更完善和有效。我国在计算机软件的版权保护方面已经达到世界发达国家水平,但在计算机软件的专利保护方面还比较落后。因此,我国应重视计算机软件专利保护,以激发软件开发从业者的积极性,为推动我国计算机软件的发展做出积极的贡献。

【参考文献】

[1]中华人民共和国国家知识产权局.专利审查指南[M].北京:知识产权出版社.2010

[2]李琳.有关计算机软件专利保护的问题与对策[J].信息与电脑,2010(1)

[3]陈峰.计算机软件专利保护问题研究[J].电脑知识与技术,2010(23)

[4]孙玮.计算机软件的专利保护探讨[J].安徽水利水电职业技术学院学报,2007(1)

[5]徐莉,连明伟.论计算机软件的专利保护[J].经济与社会发展,2006(12)

【作者简介】胡 明(1978— ),女 ,玉林市机电工程学校讲师,研究方向:计算机应用。

软件保护机制研究 篇7

1 硬加密方式

常用的硬加密通常采用的方式是将被保护的软件与硬件加密锁有效的绑定到一起,比如一些重要的敏感数据、key file授权文件、加密算法等都存储到硬件加密锁中。一般根据使用CPU的不同分为普通加密锁和智能加密锁。

硬加密虽然从安全性上来说比较高,但是缺点还是比较明显:

1)对于升级、维护比较难以管理;

2)由于需要硬件设备,所以成本偏高,主要包括生产、运输、安装等成本;

3)影响用户体验,因为需要安装相应硬件的设备驱动和硬件设备。

2 软加密方式

软加密是指使用软件方法来进行各种加密保护,随着软件保护技术的发展越来越多的软加密技术已经出现,比如常见的:注册码保护方式、功能菜单限制保护、使用时间限制保护、采用网络验证机制、验证文件保护、反跟踪技术保护、软件加壳保护机制等。

2.1基于注册码保护机制

注册码其实就是序列号保护机制,本质为防止软件被盗版而采取的保护措施。用户通常从网络上下载一个试用版本的软件,在使用时间上有限制,如果时间过期后,就必须注册才能够继续使用,使用者必须将自己的身份证号码或手机号提供给软件公司,然后软件开发公司利用用户的信息通过注册机计算出一个有效的、唯一的序列号。用户再利用计算出的序列号和用户信息输入软件中,如果信息合法那么相应的限制被取消。整个过程从数学的角度看其实就是映射关系。常见的映射关系有四种,如表1:

2.2基于菜单功能限制保护机制

基于菜单功能限制保护的软件保护机制,主要用于软件的demo版本,部分菜单功能被限制不能够使用,通常有两种方式方法一:使用版本的软件和正式版本的软件本身完全不同,使用版本的软件在菜单中对于的功能实现函数根本就没有,也就是只有正式版本中才有相应的功能处理函数。方法二:使用版本和正式版本实质上是一样的,只是将功能菜单设置为非激活状态或隐藏,只有用户成功升级为正式用户后,被限制的功能才会解除。对于破解者来说,只需要想办法如何打开这些受限的菜单功能模块代码上。

2.3基于时间限制保护策略

基于时间限制的软件保护机制主要包括两种方式:1、总使用时间限制;2单次使用时间限制。

总使用时间限制主要是针对试用版本的软件在试用时间上的限制,比如某个软件试用期限为30天,如果用户超过软件试用期的时间,此软件用户就不能够再使用了。

第二种方式,主要是指用户单次使用试用版过程中的使用时间的限制,比如使用版本的软件单次使用的时间为20分钟,20分钟后就不停的弹出提示用户购买升级为正式用户。

2.4基于key-file文件保护机制

Key-file(注册文件保护)文件保护机制,用户不需要输入序列号或注册码等信息,充分利用文件来保存验证信息实现软件安全性保护。这种方式其实是序列号保护机制的变形,只是验证信息保存在文件中,通常key-file文件中的文件格式都是软件开发者自行定义的,从原理上来说通常与软件的配置文件(通常xml格式)有点类似。用户升级为正式用户后,软件开发者会提供一个key-file文件,你只需要把这个文件放到特定的目录安装目录下面,下次启动软件的时候会自动寻找验证用户的合法性。

2.5基于软件保护壳的保护机制

基于加壳技术的软件保护主要是对可执行文件进行加密、压缩。对要保护的软件加上一个外壳,同时PE文件任然能够正常运行。外壳程序主要负责把受保护的软件解压解密到内存中,并且控制权交还给原程序。整个过程用户不清楚也不并清楚该执行过程,并且程序的运行速度也没有明显的影响。整过过程针对用户来说是透明的。

3 PE文件结构

PE文件对于研究软件保护,分析、掌握可执行文件的组织结构及其执行原理是很有必要的。Windows系统中的“WINNT.H”文件中包含PE文件的详细格式,常见的PE文件包括:.EXE、.DLL、.OCX、.SYS、.COM等类型的文件。这种类型的文件在磁盘上的存储格式是有一定的规律的。

从总体上看PE文件分为五大部分:1、Dos Header;2、PE Header;3、Section Table;4、Section;5调试信息。如图1所示:

可执行文件加载器加载文件的时候,并不是一次把可执行文件一次性装入内存中,而是通过循环遍历文件的内部结构来判断那一部分的内容被映射到内存中。当文件被加载到内存中,内存和外存中的文件数据结构已经发生了变化。通常可执行文件在内存映射文件中各数据块之间的相对偏移地址已经发生了改变,同时科技将内存映射文件偏移与外存文件偏移进行转换(如图2):

4 加壳软件保护模型

软件壳其实就是一段可执行代码用于防止软件被非法的使用、修改、拷贝等的程序,当可执行文件加载到内存后,外壳程序首选获得程序的控制权,然后解压加密还原PE文件,最后把控制权交还给原PE文件。此模型除了采用代码乱序,还有加密算法和防破解的分析技术,增强了防止破解者修改程序的能力。

从技术层面上分析目前壳软件的发展现状:

1)多次加壳。从语义上来说就是对PE文件进行多次加壳,达到增强软件的保护强度。就软件保护而言,并不是加壳的次数与保护强度成正比的。

2)伪装加壳。通常通过改变文件自身的特征属性来伪装自己,从而干扰软件破解者的分析能力,如果用户没有正确的分辨出外壳的类型,破解的时候将花费巨大的资源和时间,Tricky Signer是目前比较流行的伪装加壳工具。

3)代码混淆加壳。现在JAVA中间代码的保护就采用的这种方法,目前.net Obfuscator程序上也采用这种保护方式。

4)代码变化加壳。这种方式主要是采取合适的算法对代码进行代码变化,原程序运行的时候外壳程序就需要把乱序的原程序恢复为正常的。从静态反汇编后看到的代码全是乱序的。

4.1 加壳原理

加壳的原理:1)对PE文件各section区块压缩和加密;2)添加解密和解压程序到新的section区块中,以及添加区块头到区块表中;3)最后修改原程序的入口地址;加壳结构如图3:

4.2外壳加载

外壳的加载过程如图4:

1)保存程序的入口参数

2)获取壳要用的API地址

3)解密原程序中的所有区块的数据

4)初始化IAT

5) 重定位

6)HOOK-API

7) 跳转到源程序的入口地址

4.3基于混合的软件保护模型

常见的脱壳步骤为:首先找到可执行原程序的入口地址,再dump可执行文件的映像,从加壳后的可执行文件自身来看不管什么时候最终都要转入原程序的入口地址。由于壳技术本身的要求我们不可能隐藏入口点的地址。那么我们可以采取的方式是让脱壳者即使dump了可执行文件也没法还原程序。基于这个特性本文采用了基于混合的软件加壳保护模型,将原程序和外壳有效的混合到一起。

从图5中可以看出即使脱壳者查找到程序的入口地址,同时dump可执行文件的内存映像,也很难还原原程序文件。因为一旦把壳脱了原程序部分代码也脱掉了。这样就很难还原原代码从而达到保护软件的目的。

此模型主要是采用代码乱序的技术。此技术就是把原程序打乱,让脱壳者很难分析和破解。达到外壳和原程序相互混合的目的,增加软件的安全性。此模型除了采用代码乱序技术以外,也结合花指令技术、反-反汇编技术、以及结构化异常处理技术等来增强被分析、破解的软件保护技术。

4.3.1模型系统架构图

原可执行文件处理包括添加壳程序和可执行文件重组工程:将需要加壳的文件从磁盘加载到内存中去,接着对可执行文件内存映射每个相关头、区块进行处理。

外壳程序:加壳后的PE文件首先运行壳程序时候,会对原来的可执行文件进行循环校验,同时对原加密的区块数据进行解密,以及重建输入表,原程序乱序处理,最后还是跳转到原程序的入口地址。如上页图6。

此保护模型主要由加密部分、外壳部分、外壳添加部分、可执行文件处理部分构成,详细的加壳程序流程如图7所示:

5 结论

软件版权保护 篇8

因特网的飞速发展为共享软件的快速发展提供了前所未有的机遇, 同时, 由于软件是一类特殊商品, 极易复制和网上传播, 造成盗版软件泛滥, 严重地损害了软件开发商的利益。如何进行软件版权保护, 防止非法用户盗版, 一直是软件开发商不断研究的课题。依据加密的原理和加密方式, 目前软件版权保护技术分为以下三大类:

(1) 软加密 它就是不依赖特定的硬件来实现对软件加密保护的技术。常见的保护方式包括:序列号 (注册码) 保护方式、KeyFile保护方式、功能限制保护方式和时间限制保护方式等。它的最大优势在于加密成本低, 便于在互联网上进行软件的发布和销售, 是适合共享软件的保护方式;它的缺点在于不能防止破解者通过动态调试或静态分析技术找到软件的关键指令, 修改该指令破解软件[1]。

(2) 硬加密 它就是依赖特定的硬件, 通过硬件和软件相结合的方式来实现软件加密保护的技术。常用的方法有磁盘加密、加密卡和加密锁等。它的优势在于利用硬件的不可复制性达到较高强度的加密保护;其缺点是需要额外的硬件, 成本高, 而且也不利于网上发布软件。

(3) 网络加密 它就是利用网络技术对软件进行加密保护的技术。常见的方法有网络验证等。它的优点是将软件运行的重要数据放在服务器上, 只有通过联网验证用户注册信息后才能取得这些数据运行软件, 它的加密强度较高, 其缺点是需要建立专门的服务器网站, 成本高[1]。

通过以上介绍可以看出较为安全的共享软件版权保护方式要同时具有以下四个特征:① 软件的重要数据与软件主体分离;② 软件不可复制;③ 软件要有反修改、反跟踪和反静态分析等反破解功能[2];④ 便于在互联网上发布和销售软件。根据这四个特征笔者提出一种基于虚拟加密锁的共享软件版权保护方法。

2 虚拟加密锁的理论基础

2.1 软件加密锁[3]

软件加密锁是为软件开发商提供的一种智能型的软件加密工具, 它包括一个安装在计算机并行口或USB口上的硬件, 及一套适用于各种语言的接口软件和工具软件。它具有如下特点:加密锁据有防破解功能, 可对抗各种调试工具的跟踪;一锁一密码或一种电路, 软硬件不可互换;提供各种语言的编程和工具软件, 方便开发人员在自己开发的程序中使用;允许软件开发商将自己软件中的一部分程序或算法写进锁中, 并在锁中运行, 从而使开发商的软件同加密硬件有机地结合在一起。

用户在使用软件时, 必须把加密锁连接到计算机的并口或USB口上, 软件才能继续运行。如果没有安装加密锁或安装的不是该软件的加密锁, 则软件不能运行或功能不完整, 从而达到保护软件版权的目的。

2.2 DLL动态链接库

DLL是一个可以被其它应用程序共享的已编译的代码模块, 其中封装了一些可以被共享的代码和资源。Windows应用程序可根据DLL中的指令打开、启用、查询、禁用和关闭驱动程序。DLL文件还可以方便地实现对硬件资源和内存资源的访问。它主要具有如下特点:DLL的开发与具体的编程语言及编译器无关, 只要遵循其开发规范并安排正确的编程接口, 无论使用何种语言编制的DLL都具有通用性;使用DLL不是将其库代码拷贝, 而只在程序中记录函数的入口点和接口, 程序执行时才能将代码载入内存。多个程序使用相同的DLL时, 内存只需要装载一次, 可以高效经济地使用内存;DLL是基于Windows的程序模块, 它不仅包含可执行代码, 还可以包含数据和各种资源, 扩大了库文件的使用范围。

3 用虚拟加密锁实现共享软件版权保护的方法

3.1 虚拟加密锁加密的原理[4]

由上述DLL文件具有的功能和特点可知, 对DLL文件进行反破解处理就可以实现硬件加密锁的主要功能, 完成对软件版权的保护。另外, 与加密锁的硬件价格相比, DLL文件的开发几乎不需要投入成本。再者, 由于DLL文件与软件主体在同一个文件夹下, 软件主体执行时无需访问并行接口或USB接口, 因而节约了计算机硬件开销, 运行速度更快, 可实现对软件的保护。基于上述因素考虑, 我们在传统的软件保护技术的基础上, 推陈出新, 提出一种基于虚拟加密锁的软件版权保护方法。

虚拟加密锁是一种基于DLL文件的软件保护技术, 它是软加密技术的一种, DLL文件主要是通过模拟硬件加密锁对软件主体运行的控制来仿真加密锁的。将软件中只有注册用户才能使用的关键功能模块、注册用户的计算机指纹信息和基于用户计算机指纹的注册验证模块都封装到DLL文件中, 同时在DLL文件中加入文件完整性检测、反调试和反静态分析功能模块来提高DLL文件的反破解性能。软件运行时, 当执行到DLL文件中需要注册才能使用的功能时, 必须进行DLL文件的完整性检测、调试器的检测, 只有通过检测、注册验证后才能执行软件的功能, 否则退出软件。由于DLL文件内置了用户计算机指纹信息 (具有不可复制性) 和反破解模块, 因而DLL文件具有类似加密锁的功能, 可以取代加密锁, 达到对软件版权保护的目的。其系统基本原理图如图1所示。

3.2 虚拟加密锁实现的功能

3.2.1 封装软件中的关键功能使软件试用版与正式版分离

为满足第1节所述特征①, 设计软件时将软件分成软件主体和DLL文件两部分。软件主体就是软件的试用版, 在网上发布。将软件的关键功能封装在DLL文件 (虚拟加密锁) 中 (在实际开发软件时, 如果封装的功能多导致DLL文件过大, 可以只封装每个功能模块中的关键数据处理部分) , 如图1所示, 它只提供给注册用户, 从而实现软件试用版与正式版 (即软件主体+虚拟加密锁) 文件的分离, 降低了破解者破解正式版的几率。

3.2.2 采集用户计算机指纹信息并生成计算机ID[5]

所谓计算机指纹是指与计算机硬件有关的不可复制的信息, 这些信息通常包括硬盘物理序列号和主板序列号、CUP序列号等。不同的计算机有不同的计算机指纹, 因而用户计算机指纹可以起到唯一标识计算机的作用, 确保虚拟加密锁文件具有不可复制性。将采集的用户计算机指纹信息经过Hash算法 (如SHA、MD5等) 处理生成用户计算机ID。

3.2.3 注册用户的合法验证

为满足第1节所述特征②, 将根据注册用户的计算机指纹信息生成的ID预置到虚拟加密锁 (DLL文件) 中, 保证了该虚拟加密锁只能运行在该注册用户的计算机上。当用户运行虚拟加密锁中的关键功能时, 虚拟加密锁采集该用户计算机指纹, 经过一定加密运算生成计算机ID与预置的计算机ID比较, 若两者相等, 说明该用户是合法用户, 则正常运行软件功能;若不相等, 说明该用户是非法用户, 则限制该功能的运行或退出软件。

3.2.4 反破解[6,7]

如果软件不能防止破解者的非法修改, 其它保护措施做得再好, 也很容易被破解。为满足第1节所述特征③, 在对虚拟加密锁文件进行反调试、反静态分析的基础上增加反修改功能[7]。

3.2.4.1 虚拟加密锁的完整性校验[1]

对虚拟加密锁文件进行完整性校验, 可确保其不被非法修改。校验的方法可采用API函数MapFileAndCheckSum进行完整性校验。

3.2.4.2 调试器检测[1]

为了防止破解者用调试工具 (如OllyDbg等) 对虚拟加密锁程序文件进行跟踪, 可用API函数IsDebuggerPresent来检测[1]。

3.2.4.3 反静态分析

为了防止破解者通过W32Dasm、IDA Pro等反汇编分析工具进行反汇编分析, 可在虚拟加密锁文件中增加大量花指令。另外, 用虚拟机软件VMProtect对虚拟加密锁文件进行处理, 可以大大增强其抗静态分析的性能[1]。

3.3 用户注册过程

软件试用版用户试用满意后, 通过汇款或网上银行转账等方式付款后, 用户将计算机ID (根据用户计算机指纹经加密生成的) 通过电子邮件发送给软件开发商, 软件开发商根据用户计算机ID重新编译程序生成虚拟加密锁文件, 再通过电子邮件发送给用户, 用户接收后用该文件覆盖软件安装文件夹下的同名文件, 就可以使用软件的全部功能。这样就可以方便地利用互联网完成软件试用版的发布和正式版的销售, 这满足了第1节所述特征④。

4 结束语

在分析当前常见的软件版权保护技术的优缺点的基础上, 提出了虚拟加密锁的共享软件版权保护方法, 以DLL文件为载体实现了加密锁的功能, 它具有开发成本低 (与硬件加密锁比) 、软件版权保护性能强、便于网上发布和销售共享软件等优点。本文提出的虚拟加密锁已用于笔者开发的《C/C++程序设计学习与实验系统》和《Masm for Windows 集成实验环境》共享软件中, 取得了良好的版权保护效果。

摘要:分析目前常见软件版权保护技术的优点和不足, 提出了一种虚拟加密锁的共享软件版权保护方法, 用动态链接库DLL文件代替加密锁, 将软件的关键功能模块、基于用户计算机指纹的注册验证模块和反破解模块封装在动态链接库文件中, 从而模拟加密锁达到保护共享软件版权的目的。该方法已应用于共享软件的版权保护中。

关键词:计算机指纹,版权保护,虚拟加密锁,动态链接库,反破解

参考文献

[1]段刚.加密与解密 (第三版) [M].北京:电子工业出版社, 2008:102-103, 121-126, 392-395, 321-323.

[2]俞银燕, 汤帜.数字版权保护技术研究综述[J].计算机学报, 2005 (12) :1957-1966.

[3]飞天诚信.软件加密原理与应用[M].北京:电子工业出版社, 2005:401-406.

[4]童恒庆, 熊丽.利用虚拟狗的软件本地化保护方法[J].软件导刊, 2005 (20) :37-39.

[5]刘红敏, 尹志喜.计算机指纹生成技术研究[J].华北工学院学报, 2004 (01) :46-48.

[6]谭貌, 陈义, 涂杰.软件版权保护技术的研究与分析.计算机应用与软件, 2007 (01) :54-57.

谈软件的破解与保护 篇9

软件的使用在我国的信息网络中起着极其重要的作用, 部分软件在制作的过程中会耗费大量的精力以及时间, 而要取得回报, 便是利用销售软件的方式, 来将软件贩售给需要使用的人。但是部分人员为了能够免费的使用软件或者为了能够达到非法的目的, 便对软件的保护机制记性破解, 使得软件能够不受限制也无需购买的被使用。这不仅对于软件开发者自身的经济利益带来了损害, 还导致软件开发者失去了继续开发的信心。下文主要针对软件的破解以及开发进行了全面详细的探讨。

1 常见的软件破解方法

首先我们来了解一下破解中几个重要的专业术语。

1) 断点, 断点实际上就是程序在运行过程中被中断的环节, 而导致中断现象出现的原因通常都是由于特殊情况的出现, 而使得计算机在这一过程中对当前任务进行暂停, 并且直接执行其他任务, 之后再返回继续执行。而在这期间进行解密的过程中, 就是在程序对于注册码进行获取并且开始对注册码进行对比的过程中, 便完全将这个过程中断下来, 之后再利用程序分析的方式, 来迅速的计算出相应的注册码。

2) 领空, 领空的意识实际上就是程序自身管理的领土范围内, 也就是对于程序自身的程序码区域进行处理。每个程序自身在欲行的过程中, 实际上都没有一个固定的编写方式, 那么在切入程序或者是中断程序的过程中, 就不能够依赖程序断点来设置, 也就是说, 所设置的断点必须要是每个程序在运行的过程中, 都会运用到的相应程序。

3) API, 即Application Programming Interface的简写, 这一意思也能够被称之为是程序的编程接口, 其中所涉及到的定义函数属于一个系统性的集合, 其中提供了大量系统访问过程中的相应特征。API之中, 通常会包含至少数百个应用程序的相应函数, 这部分函数在进行执行期间, 实际上都是执行的与系统相关的操作, 例如屏幕输出、内存分配、窗口创建等等, 从本质上来说, WINDOWS程序事实上在运行期间主要就是以API来作为基础来实现与系统的交互性。任何形式的程序, 实际上其底层都是利用大量的API函数来完成的功能构建以及实现。

了解了以上三个专业术语后, 我们看下基本的软件破解方法。

1.1 暴力破解法

这是最常见的也是最简单的破解方法, 破解者直接利用编辑工具<例如ULTRAEDIT-32>对可执行文件进行修改, 也就是说通过修改可属性程序的源文件来达到破解目的。某些元件在验证用户注册信息和注册码时候, 如果用户输人的信息与软件通过的算法生成的注册码相等, 程序就会注册成功, 否则就会注册失败。

1.2 利用算法注册机

算法注册机, 事实上就是对于软件校对注册码过程中的运算机制进行了分析, 从而制作出来的一种能够自动计算出注册码的软件。因此, 软件本身的算法极其重要, 部分情况下软件自身的作者也会对这类软件进行编写, 以便于软件的销售工作。这类软件加密的特点是一个注册码只能在一台电脑上使用, 像和电脑进行了一对一的绑定。使用步骤是首先运行试用的软件, 得到本台机器的软件机器码, 再用算法注册机算号注册, 然后用算法注册机直接算出合适的注册码, 最后用算出来的注册码直接注册。

1.3 补丁破解法和文件注册法

补丁破解法是指用相关的补丁程序来修改软件, 以达到破解软件的目的。此方法一般是破解软件的验证注册码或时间, 基本上都是修改原程序的判断语句。

2 常见的软件保护方法

2.1 注册码

软件的注册码一般都是一机一个, 不能重复。下面我们来看看如何实现的。

第一步根据硬盘卷标和CPU序列号, 生成机器码, 首先编写public static string Get Disk Volume Serial Num-ber () 函数取得设备硬盘的卷标号, 其次编写public static string get Cpu () 函数获得CPU的序列号, 最后生成机器码, 函数如下:

第二步根据机器码生成注册码, 需要编写public static string get Regist Num () 函数来实现。第三步。检查注册状况, 若没有注册, 可自定义试用天数, 延迟, 未注册画面等等, 可编写private void Check Regist0 Cpl数来实现。

2.2 软加密

所谓软加密就是不依靠特别硬件来实现的对软件的保护技术。当前国际上比较通用的软件都采取软加密的方式, 例如微软的windows系统、杀毒软件等, 它的最大优势在于极低的加密成本。目前主要有密码法、计算机硬件校验法、钥匙盘法等。目前比较流行的是使用外壳, 外壳分为压缩壳和加密壳, 其中压缩壳的保护性比较弱, 所以一般采用加密壳, 其原理是利用堆栈平衡原理, 修改程序人口处代码, 使其跳转到壳代码执行解密程序, 将原程序代码解密后跳回原程序的OEP继续执行。目前比较强的加密壳采用的是动态解密代码、SMC, IAT加密技术, 程序在运行过程中动态解密代码, 执行完毕后立刻删除。

2.3 硬加密

硬加密方式, 实际上就是人们日常生活中所常见的加密锁以及加密狗等形式的加密措施, 其造型类似于U盘, 能够直接插在电脑的USB接口上或者是并口的软硬体之上, 通过硬件保护的措施, 能够切实有效的提升对于数据的保护能力, 最大限度的避免知识产权被滥用的可能性。在实际运行的过程中, 其原理就在于程序运行直接对接口上的解密设备进行读取, 任何其他形式的解密方式都无法冒充, 同时也不认可。这是目前市场上防护性能最佳的加密工具, 但是由于其流通的不便捷性以及成本问题, 导致其只能够在部分高端软件中进行使用。

3 结束语

综上所述, 软件的破解以及加密实际上就是矛与盾之间的关系, 而优秀的加密技术便是使得破解人员在进行破解的过程中, 所需要耗费的精力以及时间大幅度提升, 直到破解者完全放弃。同时, 我们也必须要充分的认识到, 软件破解不仅是不道德的行为, 同样也是需要承担法律责任的违法行为。现如今, 我国的软件进入到了市场化的过程中, 软件的价格逐渐平面化, 已经有越来越多的人能够用得起正版软件, 因此, 我们要尽量的提升自我思想意识, 多支持正版软件的发展, 这对于我国软件行业朝着国际化的方向发展起到了极其重要的推动作用。

参考文献

[1]高茂华, 郑建民.GHOST在软件破解上的研究[J].中国现代教育装备, 2006 (04) .

[2]徐良华, 孙玉龙, 高丰, 朱鲁华.基于逆向工程的软件漏洞挖掘技术[J].微计算机信息, 2006 (24) .

浅析软件的破解与保护 篇10

开发软件时, 尤其当用到商业用途时, 注册码和激活码是非常重要的, 未注册的用户会加上某些限制, 如使用天数, 延迟, 未注册画面等等。但是现在的软件破解技术十分强大, 各种国内外大型软件都有注册机制, 却同时也不断地被破解, 国家一再加大力度, 打击非法软件出版物, 扶持正版软件, 但实际效果并不理想。大多的软件商选择了购买加密产品或者加密技术来保护自己的软件, 软件保护一般分为软加密和硬加密。

2、常见的软件破解方法

首先我们来了解一下破解中几个重要的专业术语。

(1) 断点, 所谓断点就是程序被中断的地方, 中断就是由于有特殊事件发生, 计算机暂停当前的任务, 转而去执行另外的任务, 然后再返回原先的任务继续执行。解密的过程就是等到程序去获取我们输入的注册码并准备和正确的注册码相比较的时候将它中断下来, 然后我们通过分析程序, 找到正确的注册码。

(2) 领空, 所谓程序的领空, 就是程序自己的领土地盘, 也就是我们要破解的程序自己程序码所处的位置。每个程序的编写都没有固定的模式, 所以我们要在想要切入程序的时候中断程序, 就必须不依赖具体的程序设置断点, 也就是我们设置的断点应该是每个程序都会用到的东西。

(3) API, 即Application Programming Interface的简写, 我们叫应用程序编程接口, 是一个系统定义函数的大集合, 它提供了访问操作系统特征的方法。API包含了几百个应用程序调用的函数, 这些函数执行所有必须的与操作系统相关的操作, 如内存分配、向屏幕输出和创建窗口等, WINDOWS程序以API为基础来实现和系统打交道。无论什么样的应用程序, 其底层最终都是通过调用各种API函数来实现各种功能的。

了解了以上三个专业术语后, 我们看下基本的软件破解方法。

2.1 暴力破解法。

这是最常见的也是最简单的破解方法, 破解者直接利用编辑工具<例如ULTRAEDIT-32>对可执行文件进行修改, 也就是说通过修改可属性程序的源文件来达到破解目的。某些元件在验证用户注册信息和注册码时候, 如果用户输入的信息与软件通过的算法生成的注册码相等, 程序就会注册成功, 否则就会注册失败。

2.2 利用算法注册机。

算法注册机是要在分析了软件的注册码算法的基础上, 制作出来的一种可以自动生成软件注册码的程序。所以软件的算法很重要, 一般软件作者自己也编写, 方便软件的销售使用。这类软件加密的特点是一个注册码只能在一台电脑上使用, 像和电脑进行了一对一的绑定。使用步骤是首先运行试用的软件, 得到本台机器的软件机器码, 再用算法注册机算号注册, 然后用算法注册机直接算出合适的注册码, 最后用算出来的注册码直接注册。

2.3 利用内存破解。

我们知道所有正在运行的程序的数据, 全部都要加载到内存中去, 软件在进行注册码认证的时候会有个比较的过程, 所以我们只须知道所要破解软件的注册码的内存地址, 就达到目的了。这种方法的优点是无须花大力气掌握软件注册码的算法, 非常节省编写内存注册机的时间。步骤是先加载内存注册机, 再通过它去获得内存中软件的真实注册码, 或修改内存中软件相关的某些数据, 来达到破解软件的目的。主要有2种方式, 第一种直接从内存中得到注册码, 第二种在内存中模拟已注册程序的运行环境。

2.4 补丁破解法和文件注册法。

补丁破解法是指用相关的补丁程序来修改软件, 以达到破解软件的目的。此方法一般是破解软件的验证注册码或时间, 基本上都是修改原程序的判断语句。比如程序试用期是一个月, 就可以把这个修改掉, 来达到无限使用的目的。文件注册法就是把软件的注册内容放到一个文件里, 以方便自己或别人用它来注册, 主要有注册表导入和注册文件导入两种方式。

3、常见的软件保护方法

3.1 注册码。

软件的注册码一般都是一机一个, 不能重复。下面我们来看看如何实现的。

第一步根据硬盘卷标和CPU序列号, 生成机器码, 首先编写public static string Get Disk Volume Serial Number () 函数取得设备硬盘的卷标号, 其次编写public static string get Cpu () 函数获得CPU的序列号, 最后生成机器码, 函数如下:

第二步根据机器码生成注册码, 需要编写public static string get Regist Num () 函数来实现。

第三步。检查注册状况, 若没有注册, 可自定义试用天数, 延迟, 未注册画面等等, 可编写private void Check Regist () 函数来实现。

3.2 软加密。

所谓软加密就是不依靠特别硬件来实现的对软件的保护技术。当前国际上比较通用的软件都采取软加密的方式, 例如微软的windows系统、杀毒软件等, 它的最大优势在于极低的加密成本。目前主要有密码法、计算机硬件校验法、钥匙盘法等。目前比较流行的是使用外壳, 外壳分为压缩壳和加密壳, 其中压缩壳的保护性比较弱, 所以一般采用加密壳, 其原理是利用堆栈平衡原理, 修改程序入口处代码, 使其跳转到壳代码执行解密程序, 将原程序代码解密后跳回原程序的OEP继续执行。目前比较强的加密壳采用的是动态解密代码、SMC、IAT加密技术, 程序在运行过程中动态解密代码, 执行完毕后立刻删除, 并且对IAT加密, 当需要调用API时用解密算法算出API的实际地址来调用, 更有甚者, 壳里有壳。目前常见的比较强的5大壳有: (1) Encrypt PE, 其特点是对IAT加密比较强, (2) ASProtect, 其特点是采用多层SEH, 很容易把人转晕, (3) ACProtect, 其特点是采用stolen code的办法, (4) Armadillo, 其特点是双进程互相检测, (5) themida, 其特点是采用虚拟机技术。好的加密效果在于让盗版者在破解被保护的软件时, 付出巨大的代价, 耗费极大的时间精力, 最终被迫放弃攻击。

3.3 硬加密。

硬加密就是我们所说的加密狗或加密锁, 是一种插在计算机USB口或并口上的软硬件结合的加密产品, 目前绝大部分都是USB口形式, 是基于硬件保护技术, 其目的是通过对软件与数据的保护防止知识产权被非法使用, 是保证高档软件在市场生命周期中免受盗版侵害的功能强大的工具。加密狗一般都有几十或几百字节的非易失性存储空间可供读写, 现在较新的狗内部还包含了单片机。软件开发者可以通过接口函数和软件狗进行数据交换, 来检查软件狗是否插在接口上。加密狗内置的单片机里包含有专用于加密的算法软件, 该软件被写入单片机后, 就不能再被读出。这样, 就保证了加密狗硬件不能被复制。同时, 加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数, 如DConvert (6) =67876、DConvert (X) =34567。

4、结束语

软件破解和软件加密就是矛和盾的关系, 好的加密效果在于让盗版者在破解被保护的软件时, 付出巨大的代价, 耗费极大的时间精力, 最终被迫放弃攻击。最后我们要认识到软件破解是不道德的, 是违法《计算机软件保护条例》的, 现如今软件的大众化、市场化, 低价化, 也让我们有机会有能力去使用正版软件, 所以我们要提高觉悟, 力所能及的不使用盗版, 以实际行动支持中国的软件行业发展。

摘要:保护知识产权, 抵制盗版软件, 是目前中国软件业所面临的迫切问题。目前绝大多数软件都采取了加密技术来应对, 本文分析了软件破解中几个重要的专业术语和常见的软件破解方法, 并具体介绍了软加密和硬加密技术。

软件保护中的反跟踪技术 篇11

关键词:调试器 断点 反加载 反监视 父进程

1、反调试

调试器是工作于CPU和操作系统之间,运行在Ring0级,能够调试操作系统内核的软件。Compuware NuMega公司的SoftICE 软件就是一个调试器,另外流行的还有OllyDbg和TRW2000。这些调试器可以将已经是机器码的EXE文件加载入内存,并可以完成单步运行、下断点等许多功能,软件如果没有反跟踪的机制,调试者利用这些调试器,可以单步跟踪、下断点、甚至可以跟踪分析得到注册算法做出注册机。

反调试技术中主要使用以下技术:

1.1句柄检测

利用CreateFileA()或_lopen()函数来获取SoftICE的驱动程序的句柄,如果成功,就说明SoftICE驻留在系统内存中,这时就可以采取退出、不让程序再往后正常运行或者其它措施,SoftICE驱动程序在9X核心的Windows中是“\.SICE”,在NT核心的Windows中是“\.NTICE”

下面是检测9x核心Windows中的SoftICE的VC++代码,NT核的代码类似。

BOOL IsSoftIce9xLoaded()

{

HANDLE hFile;

hFile = CreateFile( “\\.\SICE”,

GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_READ | FILE_SHARE_WRITE,

NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL,

NULL);

if( hFile != INVALID_HANDLE_VALUE )

{

CloseHandle(hFile);

return TRUE;

}

return FALSE;

}

1.2 利用UnhandledExceptionFilter函数检测

对于NT核心的Windows,如果SoftICE在运行,SoftICE会在kernel32!UnhandledExceptionFilter函数第一字节处设一个INT3指令,也就是用“CC”代替原来的“55”,以此来判断SoftICE是运行,下面的代码就是用来判断这一个字节是否被替换:

BOOL NT_IsSoftICELoaded()

{

FARPROC Uaddr ;

BYTE Mark = 0;

(FARPROC&) Uaddr =GetProcAddress (

GetModuleHandle(“kernel32.dll”),

“UnhandledExceptionFilter”);

Mark = *((BYTE*)Uaddr); // 取第一字节

if(Mark ==0xCC)

return TRUE;

else

return FALSE;

}

2、断点检测

下断点是调试器的一个最重要的功能,调试者设置一个断点时,就会发送一个命令给调试器,调试器接到这个命令后,就用INT 3指令的机器码0xCC替换断点地址的第一字节,以后程序运行到断点时(也就是执行了INT 3中断指令),调试器就会中断,并还原这句指令,也就是用原来的机器码替换0xCC 。

要检测调试器是否设置了断点,可以利用调试器对API设置断点时,会在函数前插入“INT 3”指令(机器码为0xCC)这个特点,检测函数首地址机器码是否被改为0xCC就可以知道是否被调试器设置了断点跟踪。可以使用C++内嵌汇编来实现检测:

BOOL IsBPX(void *address)

{

_asm{

mov esi,address

mov al,[esi]

cmp al,0xcc

je BPXed

}

return FALSE;

BPXed:

return TRUE;

}

3、反加載

如果调试者使用用户模式的调试器时(如OllyDbg),前面“反调试”中的方法就失效了,用户级调试器是使用Microsoft提供的DBGHELP.DLL来实现对软件跟踪调试的,被调试的软件的父进程就是调试器。可以下面的方法来检测用户级调试器是否存在:

3.1 调用API函数IsDebuggerPresent()来检测是否有用户级调试器存在

BOOL IsInDebugger()

{

HINSTANCE hInst = LoadLibrary(“kernel32.dll”);

if (hInst != NULL)

{

FARPROC pIsDebuggerPresent = GetProcAddress(hInst,

“IsDebuggerPresent”);

if (pIsDebuggerPresent != NULL)

return pIsDebuggerPresent();

}

return FALSE;

}

3.2 检测父进程

通常情况下,普通的Win32进程的父进程是Explorer.exe,所以可以采用遍历系统中所有进程,找到自已的进程后检测父进程是不是Explorer.exe,如果不是,则很可能是被其他程序或调试器加载了,这时就可以退出、不正常执行等多种方法。由于篇幅原因这里不把遍历和检测的代码写出了,主要用到的API函数有:

得到所有进程列表快照的函数:CreateToolhelp32Snapshot();

查找进程函数:Process32First()、Process32Next();

4、反监视

调试者常用各种监视工具辅助破解,比如:文件监视工具FileMon、注册表监视工具Regmon等,如果有这些监视工具存在,软件对于注册表、文件的操作就可被调试者轻易地发现了。检测监视工具是否驻留在内存中,可以采用搜索应用程序的窗口标题,或者是句柄检测的方法。

4.1 利用窗口标题检测

TCHAR AppName[]=Text(“窗口标题”);

hWnd=FindWindow(NULL,AppName);

if(hWnd==0)

没有检测到监视工具存在;

else

检测到监视工具存在;

下面是常见的两个监视工具的窗口标题

FileMon的窗口标题是:

“File Monitor-Sysinternals:www.sysinternals.com”

RegMon的窗口标题是:

“Rigistry Monitor-Sysinternals:www.sysinternals.com”

4.2 利用句柄检测

利用CreateFileA()等函数测试是否可获得监视程序的驱动程序句柄,如果成功,则说明监视程序驻留于内存中。

下面是常见的两个监视工具的驱动名:

FileMon的驱动名:“\.FILEVXD”

RegMon的驱动名:“\.REGVXD”

5、反静态分析

静态分析是指在反汇编出来的程序清单上分析程序流程,反静态分析技术主要是从扰乱汇编代码可读性入手,一般使用大量的花指令、将提示信息隐藏等。

5.1 扰乱汇编代码

在关键部位插入大量无用的运算以误导破解者,比如添加大量的跳转指令、比较指令,以及一些循环等。

5.2 花指令

用花指令可以有效地防止调试者把反汇编出来的程序代码打印出来慢慢分析。X86指令体系中,不同的机器指令包含的字节数并不相同,有的是单字节指令,有的是多字节指令。对于多字节指令,反汇编软件需要确定指令的第一个字节的起始位置,也就是操作码的位置,这样才能正确地反汇编这条指令,否则它就可能反汇编成另外一条指令了。“花指令”就是在指令流中插入很多“垃圾”,干扰反汇编软件的判断,从而使它错误地确定指令的起始位置,这样就不能正确地反汇编出软件的汇编代码了。

6、文件完整性检验

对软件主执行程序以及使用到的DLL的完整性检查可以防止破解者对执行程序和DLL的修改,可达到防止爆破、防止重要信息被非法修改。

可采用CRC磁盘文件校验的方法,也可使用检测PE(Win32可执行文件)可选映像头的CheckSum字段的校验和的方法,Windows提供了一個API函数MapFileAndCheckSumA来测试文件的CheckSum 。

7、代码与数据结合

一般情况下,程序代码和数据是分开的,如果将序列号(也叫授权号、注册码)与程序代码结合起来,那么在得到正确序列号前,结合起来的那段代码是不可用的。实现原理如下:

在软件程序中有一段加密过的密文C,这个C可以是注册版本中的一段关键代码,也可以是使用注册版程序的某个功能所必需的数据;

当用户输入用户名和序列号之后,计算解密用的密钥:密钥=F(用户名,序列号);

对密文进行解密:明文=Decrypt(密文C,密钥);(Decrypt为解密函数)

利用SEH(结构化异常处理)技术处理解密出来的代码,如果序列号不正确,产生的是垃圾代码一定会导致异常发生;如果序列号正确,则生成的代码正常,不会导致异常产生

参考文献:

1、邓安文. 《密码学——加密演算法》. 中国水利水电出版社. 2006年03月

2、段钢. 《加密与解密》. 电子工业出版社2003.09

计算机软件专利保护问题研究 篇12

1 计算机软件的概念

所谓的计算机软件指的是计算机的程序和相关的文档, 其中计算机的程序是由计算机等具有信息处理能力的装置执行的代码化指令序列, 也是被自动转化成代码化指令序列的符号化指令序列或符号化语句序列。计算机文档指的是一些文字资料和图表, 主要通过自然语言或者形式化语言编写的, 可以用来描述程序。

计算机软件专利是需要保护的, 只有计算机软件被授予了专利, 才能更好的维护产品技术不被窃取, 更好的维护软件开发者的利益和权力, 同时还可以有效的保护软件所有人的商业利益。为此, 计算机软件专利保护是十分必要的。

2 计算机软件专利保护的问题

2.1 没有健全的审查制度

通常对于计算机软件的开发来讲, 不仅开发量大, 而且开发的时间更新快, 但真正能够获得申请专利保护的资格却很好, 仅能达到5%。同时由于我国计算机软件专利保护并不健全, 相关的审查制度并不完善, 导致部分软件开发者并不了解软件审核的资格是什么, 甚至连审查员对软件的审核程序也没有准确的界定。

2.2 审查的效率较为低下

对于我国计算机软件专利审查的要求主要体现在其软件必须要具备新颖性、实用性和创造性, 通常计算机软件的开发更新换代非常快, 软件开发数量大已经让审查消耗很多时间, 然后审查过的计算机软件往往还容易被新的软件所替代。

2.3 软件专利保护出现垄断性

大多数计算机软件的专利保护时间过长, 其过度的专利保护很容易形成行业间的垄断。同时计算机软件技术开发的特殊性, 软件的开发者可以通过自身的权力关闭其源代码进行垄断性的市场竞争, 这种垄断性的软件专利保护往往不利于对软件开发的进行。

3 解决计算机软件专利保护问题的策略

3.1 建立健全软件申请专利保护的制度

面对我国计算机软件申请专利保护的制度不明确问题, 我国应该建立健全软件申请专利保护的制度, 制定明确的软件申请知识产权保护的条件, 使计算机软件审查有章可循, 还可以缩短审查消耗的劳动量, 提高计算机软件专利的申请效率。同时对于计算机软件的开发者而言, 详细的软件专利申请规则, 可以促进软件开发者在开发软件时, 根据规则进行对软件的设计, 从而提高对自己开发软件的保护意识, 提高计算机软件的利用率。

3.2 缩短申请专利保护的时间, 提高审查效率

计算机软件从开发到应用都会拥有自身的最佳黄金销售期, 同时由于计算机的飞速发展, 其计算机软件开发具有时间短, 更新快的特点, 导致这种黄金销售期也很短暂, 如果计算机软件审核时间过长, 导致专利保护无法实现, 很容易错过计算机软件的最佳销售时期。为此, 要想确保软件使用的新颖性, 计算机软件专利保护部门就要提高其工作效率, 尽可能的减少审核时间, 严格按照审核的规章制度, 在确保审核质量的前提下, 加快审核速度。

3.3 缩短专利对计算机软件的保护期限

为了确保计算机软件的新颖性, 更好的迎合计算机市场, 提高计算机使用率, 计算机软件的得保护时间要适当的缩短。只要缩短专利对计算机软件的保护期限, 才能更好的避免出现计算机软件的拥有者垄断软件开发市场, 阻碍软件开发的有效进行。当前计算机软件的专利保护期限是20年, 专利部门应该按照计算机市场行情, 适当的缩短计算机软件的专利保护年限, 恰当的配合计算机软件的生命周期, 促进计算机软件在计算机发展的生命周期内能够发挥出更高的使用价值, 提高软件的销售量。

4 结语

通过以上对计算机软件专利保护的系列分析, 可见我们要积极的应对专利保护出现的问题, 采取相应的解决措施。首先要改进专利保护的立法, 为计算机软件专利保护提供合理的法律依据。其次还要提供专利保护审查效率, 避免多次审查造成的不必要的经济损失。最好还要缩短专利对计算机软件的保护期限, 要更好的适应计算机的更新周期。只要这样才能更好的加强我国计算机软件的专利保护工作。

摘要:随着网络时代的不断发展, 计算机软件也得到了迅速发展。近年来, 计算机软件专利保护问题成为了现今的热点话题, 本文首先诠释计算机软件的概念, 其次通过计算机软件专利保护的问题出发, 进行研究分析找出解决计算机软件专利保护问题的策略。

关键词:计算机软件,专利保护,问题,研究

参考文献

[1]朴京顺.我国计算机软件专利保护制度的问题研究[J].《电子知识产权》, 2011, (08) :12-13.[1]朴京顺.我国计算机软件专利保护制度的问题研究[J].《电子知识产权》, 2011, (08) :12-13.

[2]彭强.论软件二次开发的知识产权保护[D].华中师范大学, 2009, 33-34.[2]彭强.论软件二次开发的知识产权保护[D].华中师范大学, 2009, 33-34.

[3]高辉.开源软件知识产权保护问题研究[D].黑龙江大学, 2008, 24-26.[3]高辉.开源软件知识产权保护问题研究[D].黑龙江大学, 2008, 24-26.

上一篇:网络运营平台下一篇:“右”倾