软件反向工程概述
1.软件反向工程概念。软件反向工程往往是从软件的目标代码入手,“对软件作品的可执行程序进行逆向研究、分析,通过反汇编等编译方式将目标代码还原为源代码,以推导出他人软件产品所使用的原理、结构、思路、算法、运行方法、处理过程等设计要素”。[22]因为软件的目标代码和源代码可以相互分离,通常我们所能看到的只是软件的可执行程序、目标代码,这些往往是没有具体意义的代码组合,对软件开发者来说,只有读取源代码才有可能获取他人软件产品的原理和思路。软件的使用过程一般也无须获得源代码,软件从源代码转变到可执行程序的过程中,经过了一系列的形态变化,导致即使是专业软件研发者也无法直接从软件的目标代码中准确获取软件的设计信息,这就催生了软件反向工程。
2.软件反向工程的优势。软件反向工程具有以下优势:①有助于减少软件的重复、无序开发,从而大幅度降低软件研发成本,并充分激励软件的研发热情;②可以加强软件的兼容性,打破系统软件开发行业的垄断壁垒,为应用软件开发商增加更多可供选择的平台,进一步释放软件行业的创新能力,在竞争加强的同时促进应用软件市场的繁荣和技术进步;③可有效阻止软件开发商恣意提高许可费用,减少具有兼容性的应用软件研发成本,通过促进同类应用软件的创新活力和良性竞争进一步降低应用软件的价格,那么消费者就可以更合理的价格获得更多的软件选择。[23]
3.软件反向工程的合法性。软件反向工程的合法性成立的基础在于著作权法的基本原理——思想表达二分法:思想的表达方式是受著作权保护的,而思想本身并不是著作权法保护的客体。在著作权保护模式中,主要禁止简单复制,保护不仅限于字面,不保护顺序、结构和组织,允许利用现成的程序的思想开发出新的程序。软件反向工程是从最终软件形态中还原出设计思想,再从该思想出发形成新的表达方式,[24]从这个意义上说,软件反向工程也不应当被认定为侵权。(https://www.daowen.com)
软件作为知识产品,具有历史承继性,任何新知识都是在已有知识的历史联系中产生的,当反向工程成为获取软件中不受著作权法保护的要素(如算法、思想等)的必要手段时,该反向工程也就成为符合合理使用的一种方式。如果不允许对软件进行反向工程,就赋予了著作权人对软件中不受保护的功能概念和思想实质性的垄断权,与著作权法不保护功能和思想的立法理念相违背。[25]郑成思先生在其著作中也对软件反向工程提出了自己的看法:完全禁止软件反向工程的存在,就相当于在软件领域允许第一个进门的人回头将门锁上,把其他所有的人都关在程序开发的大门之外,[26]也就等于赋予了著作权人一种类似垄断的权力,而并非权利。这些观点也给我们以下启示,有条件的承认软件反向工程的合法性,反而更能反射出利益平衡原则在软件保护领域的熠熠光辉。
著作权保护制度需要在保护创作者的专有权与推动社会科技文化发展这两个方面找到平衡点。软件反向工程正是建立在这种平衡的基础上,不断促进著作权“阻止对思想的垄断和鼓励思想的表达和出版,在维护作者个人利益的基础上实现版权的社会目标”,[27]从而进一步权衡公共利益与私权之间的关系。[28]
4.软件反向工程的分类。软件反向工程的实施目的大致可分为以下六种:①分析研究程序的功能特性;②发现并纠正程序中存在的错误;③开发一个程序的附属产品;④分析目标程序是否存在对其他程序著作权的侵权问题;⑤进一步完善该目标程序;⑥开发现有目标程序的兼容产品或其他有相似功能的产品。