计算机软件反向工程问题

更新时间:2024-01-01 作者:用户投稿原创标记本站原创 点赞:3059 浏览:8267

【摘 要】计算机软件反向工程是指计算机程序员找出一款现有软件的源代码,对它进行分析,并创造出另一款软件.由于计算机的软件具有一次性投入成本高、可多次复制的特点,所以反向工程造成种种问题.本文从计算机软件反和工程目的、计算机软件反向工程对计算机软件开发市场的危害、约束计算机软件反向工程的困境几个方面进行研究.

【关 键 词】计算机软件反向工程

一、计算机软件反向工程的概念

计算机软件是由特定的程序语言编写成的.目前绝大部分的软件是由于程序语言编写出功能模块,再对功能模块组合构成一款软件.他人在使用这块软件时,有时会想对这款软件的思路流程、语言用法进行研究,因此会用一种特别的技巧通过对软件的反向解析找出软件的源代码,对软件的源代码进行分析和研究,然后根据自己的需要创造出一个新的计算机软件产品.从这个过程可以看到,反向工程的步骤有三个:找出源代码,对源代码进行分析和理解,创作出另一款新的产品.只有完成以上三个步骤,才算完成计算机软件的反向工程.如果用计算机软件反向工程重新研制出一款软件那只是个人的事情,然而如果将计算机软件的反向工程作品散布出去,则会引起一系列的问题.

二、进行计算机软件反向工程的目的

计算机软件具有艺术价值,一个很好的软件会做到功能和谐、界面和谐、设计和谐,达成一种艺术的效果,比如电子游戏软件就被人称作第九艺术;具有科学价值,计算机软件是由各种程序代码写成,这些程序代码之间有严密的逻辑关系,如果研究计算机软件,将获得很大的科学价值;具有商业价值,计算机软件的商业价值具有一次性投入多,然而却可以用少量成本获得极大商业利润的特点.由于诈算机软件有以上的特点,所以很多人热衷于计算机软件反向工程.总体来说,通常人们进行计算机软件反向工作的目的如下:

(一)优化软件的目的

1.排除运行故障

计算机软件在设计时,往往会存在各式各样运行的漏洞,这些软件在开发时也许没有得到彻底的检验,而软件流向市场后,由于大范围的被使用,软件的运行漏洞也得到反馈.如果有些计算机软件程序员要优化计算机软件,可以通过计算机软件的反向工程了解程序代码的编写思想,通过优化的方法减少软件的运行漏洞.

2.减少安全漏洞

从法律的角度上来说,计算机软件的创作者只需要对软件的性能负责,而不需要对安全故障负责,所以很多计算机软件设计者会忽视安全漏洞的问题.实际上计算机软件的安全漏洞也是衡量软件性能的一个方面.如果一款软件安全故障太多,则软件在计算机中运行,很容易出现安全隐患.有些程序设计员为了改善软件的安全漏洞而实行计算机软件反向工程.

(二)改变软件的功能

一款计算机软件的功能可能是综合的,可能是单一的.它的功能不一定适合所有用户的需要.有些软件程序员认为该款软件的功能不适合用户的需要,可能通过计算机软件反向工程对软件的功能重新进行调整.有时程序员会精减一些软件的功能,只保留软件的基本功能;有时程序员会阅读软件的程序代码,将它的功能组合在另一款软件上.比如说著名的平面制图软件Photoshop,它的软件功能非常齐备.有一些民间软件程序员将它实行反向工程,提炼出绿色精减的版本,满足一些用户基本的功能需求;有一些软件程序员则提供组合版本,他们将大量的功能插件直接组合在程序上,人们只需要安装一款软件就不需要额外寻找插件,这种组合版给人们带来很大的便利.

(三)商业开发的目的

要开发一款计算机软件,它的成本投入主要在计算机软件研发上,此时开发者需要投入大量的人力才力对软件进行开发和测试,然而一旦开发结束,那么软件投入市场后,需要投入的宣传成本、生产生本则很有限.因为软件具有无限复制的特性,有些商家瞅准一些软件潜在的商机,想研发近似的软件投入市场进行竞争,却不愿意花费大量的研发成本,因此可能用反向工程的方法窃取他人的劳动成果,达到自己的商业目的.

三、计算机软件反向工程对计算机软件开发市场的危害

计算机软件反向工程虽然能提高软件质量、加强程序员之间的交流,然而由于计算机软件本身的特点,如果软件反向工程被滥用,则会引起种种危害.这些危害包括:

(一)侵犯原创者的利益

一款计算机软件研发出来,需要耗费原创者很多成本.这些成本包括人力、物力、财力,如果有人用计算机软件反向工程重新制作软件,则有可能危害软件研发者的利益.比如以Photoshop为例,Photoshop是一款商业软件,它是需要将软件投放市场赢得利润,如果利用计算机软件反向工程将软件的验证破译,并且随意更改软件的功能,那么软件制作公司的商业利益则受到侵犯.


(二)引起不当的竞争

由于计算机软件的特点,如果有人通过计算机软件反向工程将软件的功能模块提取并且修改,作为另一款商业软件投放市场,那么由于反向工程并不需要投入太多的研发成本,它需要花费的成本极少.以这种方式进入市场竞争,是对软件原创者的不公平.比如360软件开发出软件医生,腾讯软件也紧随着开发功能几乎完全一致的软件医生,它将这样的软件与软件捆绑投入市场,该种竞争行为属于性质恶劣的不当竞争.

(三)扼杀软件的创造力

如果计算机软件反向工程的作品投放在市场上,它能给软件原创者巨大的冲击.它不仅会削弱原创软件的竞争力,还会使软件设计者受到极大的经济损失.如果反向工程不能得到必要的限制,那么长此下去,很多计算机程序员都会热衷于用软件反向工程获得经济利润而不愿意做创造软件这种吃力不讨好的事情.因此,反向工程可能会极大挫创软件设计者的创造性,使市场上很难再有创新的软件.

四、约束计算机软件反向工程的困境

知识产权是指公民、法人、组织在科学技术或文化艺术等领域内,用脑力劳动创造出的成果享有专有的权力.如果侵犯知识产权,将要承担法律责任.知识产权的构成要件有以下四个:行为人要构成对原创者造成损害的事实;行为人要构成违反法律的事情;行为人因为主观的原因给原创者造成损害;因为行为人的行为对原创者造成损害.根据知识产权的界定,计算机软件的创作属于知识产权的保护范围.然而在实际的法律界定中,计算机软件反向工程是否构成侵犯知识产权又往往存在很多问题.其中存在的问题如下:

(一)评估软件相似度指标的问题

在知识产权的判定中如果判断侵犯知识产权,将要承担法律责任.在知识产权的判断中,构思不作为知识产权保护的对像,只有出现侵犯知识产权的事实,才能构成构成侵犯知识产权.如果在普通的文艺作品中,可以根据相似的文字、相似的情节来作为判断是否侵犯知识产权的指标,那么计算机软件反向工程又以什么指标还判断是否侵犯知识产权?软件的代码通常是用相似的语言格式写成,那么不能以相似度作为判断标准.就目前来说,以软件的相似度作为评体标准似乎比较合理.

(二)软件反向工程盈利的问题

如果行为人将一款软件进行反向工程创作出另一款软件,并且投入商业盈利中,那么可以判定为不当竞争,并且要承担法律责任.然而部分行为人创造出软件反向工程仅仅只为了完善软件的功能,他们主观上传播软件是为了非盈利的目的,然而却给软件创造者造成了实际的商经济利益侵害,如果以知识产权的标准,他们的行为为非主观侵害,那么很难依侵犯知识产权的法律对该种行为进行约束;部分行为人将反向工程的软件绑捆在另一款软件中,通过捆绑的方式加大自己软件的价值,该种行为也是非盈利行为,然而也对软件创造者造成利益侵犯,那么如何用现有的知识产权对软件反向工程的行为进行定义?目前认为,如果软件通过指标判定,确属反向工程,那么应以传播的数量来论定是否造成伤害会比较合理.

(三)激励软件原创的问题

如果软件反向工程能够获得巨大的利润,而软件的原创者耗费巨大的成本却难以得到利润回报,如果软件创造人员的积极性长期被挫伤,这个软件市场一定是畸型的.在这片市场下孕育出的商品也一定没有创造力.为了激励原创软件作品,让原创软件作品有盈利的空间,就需要对软件反向工程不当盈利追究法律责任,而要用法律的方法对计算机软件反向工程进行约束则需要细化知识产权的内容.它要求知识产权制订的细节能适当信息时代的需要.如果不能在立法上保护软件创造者的利益、在执法上对投机取巧的行为人给于严厉的打击,那么将无法形成良好的软件创造环境,就会造成计算机软件创造的危机.

五、总结

计算机软件反向工程并不是一件应当受到指责的事情,它是软件程序员研究程序、交流程序、造福用户的一种方法,然而如果不能对软件反向工程有效的界定,这种行为将会造成极严重的危害.因此,制定知识产权法律的人员和与之相关的人员应当重视计算机软件反向工程的问题,给计算机软件创造一个良好的环境.