软件反向工程


Reverse Engineering

一、 计算机软件版权保护与反向工程

一般而言,软件反向工程通常是指对他人软件的可执行程序进行逆向的解剖、分析,从软件的目标代码入手,通过反汇编等编译方式尽量还原源代码,推导得出他人软件产品的功能、组织结构、处理流程、算法、界面等设计要素。简单的说,就是从已知产品出发,开展反方向研究,从而猜测产品的开发或者制造方法。[1]
反向工程的概念最早出现在集成电路布图设计保护领域,原意是对他人“掩膜作品”的布图设计进行分析、评价,然后根据这些分析、评价的结果创造出新的布图设计。

传统版权法领域里,并不存在反向工程这个事物。计算机行业的发展之初,甚至到1965年,计算机制造商大部分时间里都是通过硬件捆绑软件的方式进行销售,这样可以将二者同时保护,既增强了市场竞争力,又减少了市场推广成本以及利益保护成本。彼时计算机属于高度专业的机器,并不是通过零售渠道销售,因此通过合同条款(例如约定禁止私自拆卸硬件设备,禁止软件反向工程等)以及商业秘密的方式,制造商就可以很好的保护技术。但随着计算机功能变得更加强大和多样化,各厂商之间的软件反向工程,以及政策法律的调整,导致计算机行业产生了变化和细分——从销售硬件中分离出来了软件服务行业,如国际商业机器公司于1970年因反垄断压力而拆分其应用软件和硬件业务。[2]

对于计算机软件的可版权性,简单地说,既有出于激励创作,促进文化和科学事业的发展与繁荣的考量,正所谓为天才之火,增添利益之油,也有出于成本—收益的考量,知识产权趋向于比物质财产的权利而需要更大的成本,“构筑栅栏”的行为给著作权的保护增加了成本,减少了社会产出。这种思想具体在著作权法上,表现为思想表达二分法,即著作权法对作品的表达进行保护,而作品背后的思想并不给予著作权法意义上的保护,例如教科书上对于某个问题的解答文字,可以受到著作权法的保护,但是这种解题方法和解题思路,无法得到著作权法的保护。

任何作品的创作,一定具有中间过程或者中间形态,好比一副山水画,在未完成之前它可能只画了一座山或者一条河,只有完成之后的形态我们才能称之为这幅“山水画”,它的中间形态仍然是一幅”画“,是一件著作权法意义上的作品。计算机软件的创作,同样具有多种形态。计算机软件,包括计算机程序和文档,其中计算机程序,我们又简单分为源代码与目标代码,而软件的版本迭代并不是源代码与目标代码之间的关系。源代码只有经过编译、调试之后,才能成为目标代码,大部分计算机程序是以目标代码的形态销售的。除非掌握了开发者的编译方法、顺序等技术信息,目标代码一般是无法反编译为源代码的(此处指同该计算机软件源代码文本上一致)。这导致人们不采取反向工程的话,很难发现程序中包含的思想、方法和原理。此外,某些程序还会被加上技术措施,以保护程序不被非法复制、破解。即便这样会给反向工程增加难度,但随着时间和技术的推进,这个过程变得越来越容易。如前所述,计算机软件的源代码形态和目标代码形态是可以分离的,并且购买者/使用者基于功能性使用并不以获得源代码为要件,开发者(权利人)只需提供该软件的目标代码即可。

软件的反向工程在研发领域,对于开发其他软件具有特别重要的借鉴价值,有助于大幅度降低软件研发成本,并充分激励软件的研发热情,还能使软件的兼容性增强,并促进重复的、无序的、低效率的软件开发得意最大程度的减少,软件开发的总体成本也能够随之降低。

从创新的角度来看,技术创新的热情往往依赖于技术竞争的可行性,反向工程意在打破技术垄断,而打破技术垄断恰恰是技术竞争的基础。反向工程为技术攻击与防御提供了可能,是技术更新和技术竞争成为现实。同时,反向工程作为一种经济而高效的手段,为一些新入场的小公司了解设计信息从而开发一些小巧实用的应用软件提供了可能,并使其能够由此获利。随着时间的推移,这样的竞争格局最终将带来技术市场的良性变化,也只有在这样的市场氛围下,才有可能最大程度地激励技术创新和研发热情,从而推动整个社会科技水平的不断提高。反之,技术垄断在一定时期内可能会推动技术进步,但最终由于缺乏竞争,垄断者必然丧失技术创新的原动力而停步不前。

二、 经典案例:Sega ENterprises Ltd. v. Accolade,Inc.

1992年世嘉企业有限责任公司诉美誉公司一案【Sega Enterprises Ltd. v. Accolade,Inc., 977 F.2d 1510 (9th Cir. 1992)】中,被告 Accolade 通过反汇编等手段对原告Sega公司开发的游戏控制台 Genesis 进行了反向工程,最终成功地使得 Accolade 的游戏软件 Ishido 在未经 Sega 授权的状态下也能够在 Sega 游戏机上运行。Accolade 的游戏软件开始在市场上独立销售,并与 Sega 公司的产品及经 Sega 公司授权的第三方开发商。美国加州地区法院一审判决被告侵权成立,其理由是被告进行反汇编的目的具有商业营利性,参见哈珀与罗出版公司案(Harper & Row, 471 U.S. at 562)。该案上诉后,美国联邦第九巡回上诉法庭最终判定,Accolade 公司有权基于“合理使用”抗辩 Sega 公司的侵权控诉,并且认定,如果反汇编是获取包含在受版权保护的计算机程序中的思想和功能要素的唯一方式,而且这种获取具有合法理由的,那么作为一个法律问题,反汇编行为就是合理使用行为。[3]

此外,从该案案情中,可以看到 Sega 公司和 Accolade 公司竞争的市场有一部分在台湾,台湾并非伯尔尼公约的缔约方,不承认台湾以外的版权,因此 Sega 公司在 Genesis III 中加入了商标安全系统。当插入游戏卡盒磁盘时,Genesis III 中的微处理器就在游戏程序中搜索包含有字母 “S-E-G-A”(商标安全系统的初始码)的四个字节的数据。如果能在正确的位置找到商标安全系统的初始码,该游戏就会被认为是兼容的,从而能在控制台上运行。在这种情况下,商标安全系统的初始码接着会形成大约三秒钟的视觉显示。所有Sega公司的游戏卡盒磁盘,包括被Accolade 公司反汇编的,都含有商标安全系统的初始码。Accolade 公司反汇编后的游戏软件,就含有该段用于商标安全系统初始码的标准头文件,而这也是 Accolade 公司复制 Sega 公司唯一一处代码。该段标准头文件即便不是 Sega 公司 Genesis 的全部代码,也是一部分,对着部分代码的复制也是构成侵权行为的,但可惜的是 Sega 公司并没有就该段代码提出侵权的诉请。

三、 软件反向工程的合理边界

著作权作为知识产权的核心内容之一,同样趋向于保护成本特别高昂,一个思想或者其他知识产品不可能像一片土地那样被人看到,或者可能在地图上得到精确描绘。土地可能在许多代人之间继承转让,但是,除非它处于不断变换的海岸线上,它始终是同一块土地,登记在同一家土地登记机关的图籍上,而且其四至范围的具体说明亦保持不变。追溯某一思想(或者图像)则要困难得多,因为它们没有任何空间界限。而且,知识产品具有的公共产品特征,使得在没有特别的法律保护的情况下,难以阻止他人的不法使用,难以排除搭便车的行为,也更难于发现未经许可的使用。从某种意义而言,良好的社会制度应当把稀缺资源配置到具有更高价值的用途上,两个人不能同时吃一根萝卜或者穿同一双鞋,但可能拥有同一项技术、方法,掌握同一项技能。[4]

大多数功能性作品(当然包含计算机软件)中不受著作权保护的部分很容易被人们以肉眼所观察、接触识别并学习。例如会计教材中的系统、方法,或者体现在建筑设计规划中的基础结构概念,都很容易被复制,而且不会复制到原作品中受著作权保护的表达性部分。然而,计算机程序通常写在磁盘或软盘中,并以目标代码的形式提供给公众使用。因此,如果人们不对目标代码进行反汇编、反编译的话,通常是无法获得包含在目标代码中的不受著作权保护的思想和功能性概念的。本文认为,满足以下条件的反向工程行为方才构成合理使用:

  1. 对目标软件的使用属于合法使用,而不是未经授权的使用。
    实施反向工程的对象必须是合法取得,若通过非法手段获取目标软件后,通过反向工程后的作品得到法律以合理使用的保护,犹如毒树之果。此处还需同禁止反向工程条款相结合考量,如果反向工程实施人同权利人之间存在禁止反向工程条款,那么违反约定的行为所取得的作品是否可主张合理使用,必须审查该禁止反向工程条款是否构成垄断行为。

  2. 行为目的仅限于获取目标软件中的思想和功能性要素。
    当人们将思想表达二分法原则适用到计算机程序以确定著作权保护程度和范围时,就出现了独特的问题。计算机程序能以诸多方式完成某一特定任务,或者满足某一特定市场需求。就此而言程序员对计算机程序结构和设计的选择,可能具有相当的创造性和个性。然而,计算机程序在本质上是执行并完成任务的实用物品。因此,计算机程序含有许多逻辑、结构和视觉显示方面的成分,而这些成分受制于程序执行的功能、效率因素,或者受制于诸如兼容性以及行业要求等其他外部因素。人类本身是无法阅读目标代码,没有特定技术,也无法通过设备、仪器阅读该目标代码。计算机软件提供给公众更多的是功能性内容,一般公众也无需去了解该软件背后的思想,因此,反向工程目的必须限制为获取该目标软件当中的思想和功能性要素,不得用于获取源代码文本后的其他用途。

  3. 反向工程后再编译的作品不能是简单复制目标软件,必须具有独创性。
    无论通过何种技术手段进行反向工程所得的源代码,只能是目标软件的复制件。采用反向工程的一方再进行编译时,必须进行具有独创性的表达,否则得到的仍是目标软件的复制件,不论得到目标软件目标代码的全部还是部分。如精雕公司诉奈凯公司一案[5],奈凯公司Ncstudio软件能够兼容Eng格式数据文件,已然具有精雕公司JDPaint软件的部分功能性要素。只有奈凯公司举证证明Ncstudio软件中能解开Eng格式数据文件加密信息的部分代码,是不同于精雕公司的与JDPaint软件配套使用的精雕数控系统中,同样用于解密部分的目标代码的情况下,方才能说奈凯公司没有侵犯精雕公司著作权。


  1. 1.曹伟.计算机软件版权保护的反思与超越.北京:法律出版社,2010.224
  2. 2.Mark A Lemley](undefined),PeterS Menell,RobertP Merges等.软件与互联网法(上).第4版.张韬略.北京:商务印书馆,2014.510
  3. 3.U. S. Court Of Appeals N C.Sega Enterprises Ltd. v. Accolade Inc.
  4. 4.William M Landes,Richard A Posner.知识产权法的经济结构.第2版.金海军.北京:北京大学出版社,2016. 545
  5. 5.评北京精雕诉上海奈凯计算机软件侵权案(第48号指导案例)

文章作者: Oᴜʏᴀɴɢ
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Oᴜʏᴀɴɢ !
 上一篇
坚果云&KeePass(多图) 坚果云&KeePass(多图)
一、为什么是坚果云(一)缘起2016 年 5 月参加实习,文档资料需要在两台电脑之间同步,供我选择的有,移动硬盘、U 盘、网盘三种解决方案。 项目 移动硬盘 U 盘 网盘 成本 ¥30 ¥40 ¥0~200 便携性 ★☆☆
2017-03-23
下一篇 
评北京精雕诉上海奈凯计算机软件侵权案(第 48 号指导案例) 评北京精雕诉上海奈凯计算机软件侵权案(第 48 号指导案例)
一、案情介绍北京精雕科技有限公司(下称“精雕公司”)自主开发了精雕 CNC 雕刻系统,该系统由 JDPaint 软件、精雕数控系统、机械本体三大部分组成。JDPaint 软件通过加工编程计算机运行生成 Eng 格式的数据文件,再由运行于数控
2017-02-20
  目录