前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小论文:计算机软件反向工程的客体和客观方面

小论文:计算机软件反向工程的客体和客观方面

原创
作者头像
Kitov
修改2021-06-10 10:51:31
4100
修改2021-06-10 10:51:31
举报

(原创:如有错漏:欢迎指正)

摘要:挖掘现有的关于计算机软件反向工程的论文摘要和专利信息,得知了在计算机软件反向工程领域的研究热点与盲点:客体上,数据应该做为成为软件的组成部分,不能忽视对数据的反向工程,数据提供人应当采取技术措施;客观方面上,对于计算机软件的不同表现形式,即解释执行的程序和需编译才能执行的程序,源代码信息暴露的程度不同,反向工程的实施差异很大。再者,虽然用户协议可以,了解计算机软件反向工程行为的客观方面的法律意义,有助于开发者了解反向工程技术在法律上的规则,合理规避法律风险;第三,分析了对作为专利权客体的软件实施反向工程的合理性;第四,讨论了软件许可证对于反向工程的限制。计算机软件作品的不同的表现形式也对反向工程同时,研究计算机软件反向工程行为的客体和客观方面,也有助于更好地评价计算机软件反向工程行为,在相关法律的实施上增加可操作性、可预见性。计算机软件反向工程行为的法律效果和法律意义。

关键词:数据、反向工程、技术措施、用户协议、解释型语言、编译型语言

目录

一、 客体 1

(一) 概念 1

(二) 计算机软件 1

(三) 作为专利权客体的计算机软件 2

(四) 计算机软件的许可证条款 2

二、客观方面 2

(一) 技术措施与反向工程 2

(二) 计算机软件程序的表现形式 3

(三) 计算机软件反向工程行为的特点 3

参考文献 3

一、客体

(一)概念

“客体”与“对象”是一对近义词。在这里使用直接“客体”并不严密,故有必要弄清楚此“客体”是行为的客体还是法律关系的“客体”1。在法理学中,法律关系的客体即是法律关系的内容——权利和义务所指向的对象。根据刑法的犯罪构成理论,客体是构成犯罪的一个要件,是一种罪名的犯罪行为所破坏的社会关系,而犯罪对象指的是犯罪行为所直接作用的对象2。

但是,考虑软件中的数据时,还需要根据数据表达的内容来灵活判断:

第一、排除描述功能方法的数据:描述功能方法,事物联系的数据只能是思想,连“额头冒汗”的标准都达不到,最多就是表达“怎样才能额头冒汗”,不被知识产权法所保护,经济上、客观上也没有反向工程的价值,不予考虑,例如计算机程序菜单5、输入法码表的组字方法;

第二、排除软件功能非必要的或不为一般多数人所知的数据:把数据区分为对软件功能必要的数据和可选的数据,必要的数据,一般多数人使用软件所必需的数据应该被认定为软件的一部分,共同受到《著作权法》的保护;而那些可以更换的、不影响软件基本功能的、或者不为一般多数人所了解的,新的外观、音效、字体等,具有独创性的,应该作为单独的作品,如具有独创性字库应当作为美术作品7。

第三、对数据采取技术措施不影响数据本身可以被采取技术措施,被序列化、隐藏于计算机程序指令中,但是不影响其单作品权利人,就一般多数人所能注意到的部分,主张其权利。

第四、数据表达的内容并没有独创性,但是完全决定了软件的使用效果的,应视为软件的一部分加以保护。比如必需的输入法码表、实验数据等。但是部分影响到软件使用效果的,可以根据情况,视为软件的一部分加以保护,若不能视为软件的一部分,则需要其提供方明确合适的许可证/用户许可,明确合作方式与纠纷解决方式,并由该数据提供方自行采取必要措施。

综上,我认为《计算机程序保护条例》应该增加数据做为计算机软件的组成部分。考虑计算机软件的反向工程的客体时,不能仅因为《计算机程序保护条例》忽略了数据。

(三)作为专利权客体的计算机软件

我国并不承认单独的计算机软件可以成为为专利权客体,但是并不代表作为工具使用的计算机软件及其所组成的系统不能成为专利权客体,例如微软公司在美国申请并且获批了一系列的关于FAT——一种在磁盘上以文件形式组织信息的文件系统的,作为Windows95的关键组成部分的从属性专利,文号为:Windows 95: U.S. Patent 5,579,517, U.S. Patent 5,745,902, U.S. Patent 5,758,352, U.S. Patent 6,286,01311。

我国关于计算机软件的专利倾向于与硬件、方法相结合的软件:在2021-04-23,腾讯公司申请的专利,申请文号为CN201911007862.6的社交账号的单向好友检测方法、装置、介质和计算机设备进入了公示阶段,截止目前仍然处于在审状态12。

(二)计算机软件

“软件=程序+数据+文档”3,这是不言自明的,甚至,基于面向服务而非产品观点,“软件=服务(集)+工作流(即应用模型)+数据”4。可见社会对软件的认识变化迅速。然而,根据《计算机程序保护条例》,“计算机软件,是指计算机程序及其有关文档”。2013年最新修订的《计算机程序保护条例》仍然使用了列举式的定义方式限缩了计算机软件的外延,难免落后于时。

程序是人使用计算机时,计算机所接受的指令序列,在程序运行时,提供逻辑上预先设计的功能供人使用;文档:展示程序的设计流程、使用方法的作品材料。除了必需的程序和文档,为了外观和性能,软件当然还需要有数据:如UI(用户界面)中的字体库、外观图片库、特效、音效库,以及医学、物理学、材料学等数据分析软件中的内置常量实验数据库等等。今天,新软件、新应用层出不穷,在功能大同小异的软件面前,数据对于用户体验的影响系数逐渐增加。更不用说完全依赖于实验数据才能得出正确结果的数据分析软件了。

杜缀一例如下:在游戏软件,某开发者甲在自己的软件A中,未经权利人张三合法授权,使用了其一幅已发表的美术作品《帕米拉原野的黄昏》,并采取了技术措施,还在其许可证中使用了免责条款。不料,另一开发者乙看到软件A中的美术作品《帕米拉原野的黄昏》十分亮眼,便采取反向工程取得《帕米拉原野的黄昏》,抄袭并于自己软件B中设计了其相关的主题、皮肤、甚至游戏角色,后来游戏大获成功,张三故向乙要求支付相应报酬,而乙举证证明了自己通过反向工程手段,从A处取得了《帕米拉原野的黄昏》,进而向A软件作者甲追偿。

显然,从一般人的认知上,B软件作者乙的举证并不能证明,反向工程与已发表作品的取得存在必然联系。再者,不能期待张三能从技术层面认知开发者乙取得画作的来源和经过。最后,甲于A软件中固然是未经许可使用了《帕米拉原野的黄昏》,但是甲在用户协议中声明了免责条款,乙难以对甲追偿。

二、客观方面

(一) 技术措施与反向工程

技术措施是用于保护计算机软件作品及其他作品的著作权的必要措施,对技术措施的突破即可以叫反向工程(或称逆向工程、逆向分析)。网络安全、系统安全的CTF比赛中即有逆向分析/反向工程方向的题目,在相关领域中的解释是将二进制机码9。对反向工程的理解不能望文生义,不能把反向工程仅局限于采取与软件开发的正向流程3相反的操作,不等同于从目标程序反向取得源代码源程序

根据2020年11月11日修订的《著作权法》第五十条中的对作品的技术措施的合理避开情形的表述,归纳出对计算机软件的技术措施的合理避开情形的表达如下:

1.对于可以通过任何途径获取的软件,国家机关依照法定程序执行公务的,其他技术人员研究加密措施、研究计算机软件反向工程、测试计算机系统及其网络的安全性能的,突破技术措施的是完全合理的。

2.对于只能通过非正常途径获取的软件,只有以教学、科研、或者非营利地帮助阅读障碍者使用为目的的,突破技术措施是合理的。

根据著作权关于反向工程的规定的上下文,可以发现计算机软件反向工程与其技术措施是高度相关的:

1.反向工程和系统或网络安全的性能测试以试图突破技术措施为目的,目标包括数据和程序。

2.正常渠道获取作品受到技术措施保护,又根据商业秘密保护的相关法律法规,软件反向工程只能是对合法渠道获取的软件进行,否则就不能作为抗辩商业秘密的事由。(也就是说,软件是否能通过获取渠道获取,是判断反向工程能否抗辩商业)当然通过简单的反向工程即可得出的信息,技术措施不够,没有任何秘密可言,不能作为商业秘密。14

《商业秘密保护规定(征求意见稿)》中规定:

侵犯商业秘密行为涉及计算机软件程序的,可以从该商业秘密的软件文档、目标程序与被控侵权行为涉及的软件是否相同,或者被控侵权行为涉及的计算机软件目标程序中是否存在权利人主张商业秘密的计算机软件特有内容,或者在软件结果(包括软件界面、运行参数、数据库结构等)方面与该商业秘密是否相同等方面进行判断,认定二者是否构成实质上相同。

(二)计算机软件程序的表现形式

计算机软件程序的表现形式千差万别。就其使用的编程语言可以区分为解释型语言(如BASIC语言、Javascript语言、Python语言)和编译型语言(如C语言、C++语言)10,因此而产生的目标程序也不尽相同(Java语言编写的程序另有不同)。源程序即程序的源代码,包含程序设计的逻辑、数据结构、变量名称等等信息。

使用编译型语言编写的源程序需要使用编译程序编译,根据机器形成二进制机器码才能使用,而程序设计的逻辑、数据结构、变量名称等等信息则在经过编译之后消失于目标程序之中,需要通过反向工程才能获取;

而使用解释型语言写就的程序不需要经过编译,其目标程序即是源程序,也叫脚本程序,其中设计的逻辑、数据结构、变量名称等等信息仍然保留,除非经过混淆16(对脚本程序使用的一种技术措施,根据脚本解释器的特点,对脚本源程序对变量名进行批量替换以掩盖原名称、隐去注释、在不改变效果的基础上改变程序的数据结构和逻辑结构的等等),这以JavaScript,一种在前端网页上广流行的脚本的混淆最为典型,现在基本上每个网站的关键逻辑数据的Javascript内容,就没有不经过混淆的。

对于混淆后的脚本程序,其反向工程的状况应视同需要编译的二进制机器码。

而对于没有经过混淆的脚本程序,不存在反向工程问题。

(三)计算机软件反向工程行为的特点

计算机软件反向工程的特点有三:专业技术要求高强、开发成本低、开发工作量小6。诉诸报端,东窗事发的不少的黑客,即通过反向工程行为突破软件技术措施的人,不少是尚未成年的孩子。可见采取反向工程措施并不需要高昂的成本。

故而新修订的《著作权法》以更高的法律位阶,在第五十条对《计算机软件保护条例》过度限制的反向工程的合理情况进行了扩展。也是呼应了《网络安全法》这一新法制定,国家对于网络安全和系统安全的重视达到了一个新高度,安全技术人员、开发者掌握反向工程的技能实属时代所需。

参考文献


1

王彦. 试论商标专用权主体的变更与扩展J. 财经问题研究, 1989(06):64-66.

2

常磊. 犯罪对象概念的批判性考察J. 法制与社会发展, 2009(04):86-94.

3

Python初步认识软件工程. (2018-07-24)2021-05-28. https://www.w3cschool.cn/zhangzexiang/zhangzexiang-8agy27po.html

4

梁员宁. 云服务可靠性评估模型及关键技术研究D. 解放军信息工程大学.

5

王迁著.21世纪民商法学系列教材 知识产权法教程 第5版M.北京:中国人民大学出版社.2016.54-59

6

王娜. 计算机软件反向工程探讨J. 电脑知识与技术, 2010(27):7860-7861.

7

王迁著.21世纪民商法学系列教材 知识产权法教程 第5版M.北京:中国人民大学出版社.2016.99

8

陈潇婷. 禁止计算机软件反向工程条款的合法性研究——AWS客户协议之许可限制条款所引发的思考J. 出版科学, 2019, 27(03):61-66.

9

FlappyPig战队著.CTF特训营M.北京:机械工业出版社.2020.

10

白亮. Java简介J. 厦门科技(1):27-29.

11

File Allocation Table. (2015-12-17)2021-05-28. https://infogalactic.com/info/File_Allocation_Table.

12

腾讯科技(深圳)有限公司. 社交账号的单向好友检测方法、装置、介质和计算机设备(审中):, CN112700341AP. 2016.

13

李镇, 莫勇. 一种嵌入式C编译器的实现方法及系统(审中):, CN105843659AP. 2016.

14

《知识产权法学》编写组编;刘春田主编;马一德,王迁,王太平,冯晓青,曲三强,孙新强,李琛,李雨峰,李明德,张玉敏,郭禾,郭寿康编.马克思主义理论研究和建设工程重点教材 知识产权法学M.北京:高等教育出版社.2019.255

15

卢志华. 珊瑚虫QQ作者被刑拘引起的基于他人软件进行反向工程的思考J. 警官教育论坛, 2009, 000(001):161-164.

16

周誉淼. 一种基于AST的Javascript混淆方法(审中):, CN110826032AP. 2020.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、客体
    • (一)概念
      • (三)作为专利权客体的计算机软件
        • (二)计算机软件
        • 二、客观方面
          • (一) 技术措施与反向工程
            • (二)计算机软件程序的表现形式
              • (三)计算机软件反向工程行为的特点
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档