内容提要: 第三方软件是指主程序软件著作权人以外的其他组织或个人,通过各种技术手段来影响或改变主程序软件具体应用功能的辅助性软件。第三方软件可以分为授权的第三方软件和未经授权的第三方软件。未经授权的第三方软件从技术上又可以分为直接修改型、系统拦截型与封包拦截型,这三种未经授权的第三方软件在不同程度上侵犯了软件著作权人的著作权与企业的经营自主权,应该承担相应的法律责任。
2010年10月29日,北京奇虎科技有限公司推出一款名为“360扣扣保镖”的安全工具,宣称该产品具有全面保护QQ软件用户的安全,包括防止隐私泄漏、防止木马盗取帐号以及加速等功能。同日,深圳市腾讯计算机系统有限公司发表声明,指责“360扣扣保镖”通过外挂手段对QQ软件的多项功能进行破坏,严重影响其软件的安全和完整服务,是一种违法行为。至此,腾讯与360之间的“3Q之战”正式爆发。“3Q之战”在整个社会上引起了广泛的关注,并造成了恶劣的影响。不少学者就“3Q之战”引发的法律问题展开了讨论。其中,对“360扣扣保镖”是否属于“外挂”、法律上是否侵权,大家见智见仁,众说纷纭,但迄今为止尚无定论。对此,笔者尝试从第三方软件的角度来理解和阐述相关的法律问题。
一、第三方软件的概念
第三方软件(Third-Party Software)是指主程序软件著作权人以外的其他组织或个人,经过软件著作权人授权或者虽未经过授权却通过直接修改软件程序或通过拦截、更改软件数据传递的方式来影响或改变主程序软件具体应用功能的辅助性软件,即俗称的“插件”、“外挂”、“补丁”、“Plugin”以及游戏软件中的MOD等。[1]第三方软件中所谓的“第三方”是针对主程序软件开发商、运营商等软件著作权人的“官方”地位而言的。软件著作权人与软件用户分别是第一方与第二方,如果软件著作权人和用户之外的其他组织或个人采取特定的技术手段对主程序软件的具体功能进行了修改,并将这种特定的技术手段以某种软件的形式固定下来提供给其他用户下载并使用,那么其提供的软件就是所谓的第三方软件。总而言之,第三方软件就是主程序软件著作权人以外的其他组织或个人,通过各种技术手段来影响或改变主程序软件具体应用功能的辅助性软件。就“360扣扣保镖”而言,它是北京奇虎科技有限公司推出的针对深圳市腾讯计算机系统有限公司的即时通讯软件产品QQ而开发的辅助性软件,属于第三方软件。
二、第三方软件的类型
根据不同的标准,第三方软件有不同的分类。从软件功能上可分为良性的第三方软件与恶性的第三方软件;从软件应用上可以分为游戏类第三方软件与非游戏类第三方软件;从软件运行方式上可分为独立的第三方软件与挂接的第三方软件;从软件技术手段上可分为修改程序的第三方软件与拦截数据的第三方软件。其中,具有法律意义的区分是根据开发是否经过主程序软件著作权人的同意,第三方软件可以分为授权的第三方软件和未经授权的第三方软件。
(一)授权的第三方软件
授权的第三方软件是指第三方是在征得主程序软件著作权人同意的前提下开发的软件,通常是在主程序软件著作权人已经对外公布软件应用程序调用接口的情况下开发形成的。应用程序调用接口又称为API(Application Program Interface),包括操作系统API与应用软件API,前者是各种应用软件与操作系统的接口,应用软件通过调用操作系统的API才能在操作系统上运行。[2]例如微软提供的Windows API,是Windows提供的一个32位环境下的应用程序编程接口。[3]凡是在Windows工作环境下执行的应用程序,都需要调用Windows API;后者是主程序软件本身的API,是某种应用软件与其他第三方软件的接口,例如中国移动飞信对外发布了即时通讯软件Fetion的API接口,即允许第三方通过其公布的应用软件接口对其软件的相关应用功能进行修改或者增强。第三方组织或者个人都可以根据飞信发布的API编写需要改进的应用程序功能模块。在使用过程中,第三方软件通过调用主程序软件提供的相应的API函数将指定的功能模块加载到主程序软件的进程中,从而使主程序软件在应用功能上满足用户的特殊需要。通常而言,第三方软件的实现需要经过第三方以及主程序软件开发商严格的软件兼容测试,预防在使用过程中出现程序冲突,在测试无误之后第三方才向用户提供正式下载版本。因此,在授权的第三方软件中,主程序软件与第三方软件无论在技术上还是法律上都是统一的,故而一般不存在侵权争议。
(二)未经授权的第三方软件
未经授权的第三方软件即第三方未征得主程序软件著作权人的同意而擅自针对主程序软件开发的辅助性软件。现实生活中的“非法外挂”、“非法插件”即为典型的未经授权的第三方软件。第三方往往通过三种方式操作,即形成三种不同技术类型的未经授权的第三方软件:
1.直接修改型第三方软件。直接修改型第三方软件是指通过直接修改主程序软件源程序代码的第三方软件,即业界所说的“直接注入”。具体而言,就是将修改程序直接注入软件主程序,从而修改主程序的数据和代码来实现各种特定功能。由于主程序软件的源程序代码是软件的核心部分,所以软件著作权人一般不会对外公布源程序代码。因此,除了软件著作权人的程序员泄露之外,第三方一般通过软件反向工程获取自己所需的源程序代码,即通过反向分析主程序的相关函数功能、参数以及地址,从而将软件的目标程序还原为软件源程序。直接修改型第三方软件的常见类型即网络游戏《传奇》、《奇迹》中的大部分外挂。其中,曾在业界引起广泛影响的“珊瑚虫”版本QQ软件就是其典型代表。
2.系统拦截型第三方软件。系统拦截型第三方软件是指通过技术手段(例如API Hook)拦截系统信息来加载特定的功能模块来实现特定的应用程序功能。系统信息拦截,又称为本地拦截,其主要是指拦截操作系统与主程序软件之间的数据传递。应用程序与操作系统之间通过应用程序调用接口(API)进行联系。例如某个应用程序一旦启动,其会调用操作系统相应的API函数加载特定的功能模块,并将存储在计算机硬盘的模块数据调入内存。未经授权的第三方软件由于无法得到主程序软件的API函数,因此无法直接调用主程序软件API函数将指定的功能模块加载到主程序软件的进程中。但是Windows操作系统的API函数是早已开放的应用程序编程接口,因此第三方可以通过调用系统API函数拦截主程序软件与操作系统之间的数据传递,在恰当的时候迫使主程序软件执行第三方软件的程序。例如瑞星针对“360扣扣保镖”所作的第三方独立研究报告中有下列技术细节的表述:“用户使用扣扣保镖(1.0.0.1004版本)时,它会把自己的主要功能模块QGuard.dll通过全局钩子方式注入腾讯QQ进程,并拦截QQ进程的系统调用ShellExecuteExW和CreateProcessInternalW等……”。[4]如果瑞星的上述技术分析成立,则表明“360扣扣保镖”在使用时会拦截QQ进程中的系统调用API函数,并加载进自己的功能模块,从而起到拦截QQ软件部分功能的效果,此即为我们所称的系统拦截型第三方软件。
3.封包拦截型第三方软件。封包(Winsock Packet)是指服务器与客户端交换网络中传输的数据包,是基本的信息传输单位。封包拦截型第三方软件是指通过拦截客户端程序与服务器程序之间的数据传递,即使用抓包工具(例如Winsock Packet Editor)来拦截客户端与服务器之间的传输信息,并通过专业的解密技术来破解封包加密,然后通过修改客户端向服务器发送的数据包或者模拟客户端向服务器发送数据包,从而达到改变主程序信息或者主程序功能的效果。因此,封包拦截型第三方软件主要是针对需要通过网络服务才能运行的主程序软件。单机软件除了注册破解与在线升级之外,一般不会受拦截型第三方软件的影响。目前,市面上的在线网络游戏中所使用的各种“外挂”基本上属于这一类型的未经授权的第三方软件。