跳转到内容

逆向工程/法律方面

来自维基教科书,开放世界中的开放书籍

逆向工程软件产品经常处于合法和非法边缘。请注意,逆向工程竞争对手的汽车或武器从未受到法律挑战,几十年前逆向工程软件也没有。因此,作为逆向工程师,您应该了解您的权利和软件所有者的权利。本章将重点介绍这一点,探讨围绕专利、版权和许可软件的问题。即使您遵守规则,您也不免受到骚扰诉讼。(注意:此处的内容反映了美国法律立场。其他司法管辖区可能拥有不同的法律。)

专利软件

[编辑 | 编辑源代码]

解释软件所有者在专利法下的权利

版权软件

[编辑 | 编辑源代码]

关于版权的法律规定,逆向工程人员必须在开源项目中注意,对此问题的普遍做法是将程序员分成两组

  1. 对程序/固件代码进行反汇编并编写规范的人。
  2. 使用这些规范创建程序的第二组人。

合理使用

[编辑 | 编辑源代码]

在少数情况下,合理使用允许在未经所有者许可的情况下复制受版权保护的材料。1976 年版权法 17 U.S.C. § 107 具体规定

尽管有 106106A 节的规定,但合理使用受版权保护的作品,包括通过复制到副本或录音或通过该节中规定的任何其他方式进行的这种使用,出于批评、评论、新闻报道、教学(包括为课堂使用复制多个副本)、奖学金或研究等目的,不构成侵犯版权的行为。在确定在任何特定情况下对作品的使用是否属于合理使用时,应考虑的因素包括——

  1. 使用的目的和性质,包括这种使用是否具有商业性质或是非营利教育目的;
  2. 受版权保护作品的性质;
  3. 相对于整个受版权保护作品而言,使用部分的数量和实质性;以及
  4. 使用对受版权保护作品的潜在市场或价值的影响。

作品未发表的事实本身不应阻止做出合理使用裁决,如果这种裁决是在考虑上述所有因素的基础上做出的。

就逆向工程和合理使用而言,法律倾向于有利于逆向工程人员。但是,对原始产品的价值产生负面影响几乎永远不会导致其被归类为“合理使用”。还要记住,合理使用不允许违反用户许可条款。

需要注意的是,合理使用并非黑白分明。合理使用和侵犯版权之间的界限非常模糊。除非您对正在做的事情非常有信心,否则您不应该这样做。

[编辑 | 编辑源代码]

数字千年版权法于 1998 年实施,旨在将任何旨在破坏或删除 DRM(数字版权管理)的版权侵权行为的服务或设备定为非法。该法禁止设计任何旨在绕过或甚至被营销为绕过任何 DRM 的服务或设备。

但是,DMCA 中有一个例外规定,说明出于软件组件之间互操作性的目的可以进行逆向工程。[1] 它规定如下

逆向工程。

  1. 尽管有 (a)(1)(A) 款的规定,但合法获得使用计算机程序副本权利的人可以绕过有效控制对该程序特定部分访问的任何技术措施,其唯一目的是识别和分析该程序中那些对于实现独立创建的计算机程序与其他程序之间的互操作性所必需的元素,并且这些元素以前尚未被从事绕过行为的人员轻易获得,只要这种识别和分析行为不构成根据本法构成侵权的行为。
  2. 尽管有 (a)(2) 和 (b) 款的规定,但任何人可以开发和使用技术手段绕过技术措施,或绕过技术措施提供的保护,以使能够根据 (1) 款进行识别和分析,或者为了使独立创建的计算机程序与其他程序之间能够互操作,如果这种手段对于实现这种互操作性是必要的,只要这样做不构成根据本法构成侵权的行为。
  3. 通过根据 (1) 款允许的行为获得的信息以及根据 (2) 款允许的手段可以提供给其他人,如果根据 (1) 或 (2) 款提到的当事人提供这种信息或手段仅仅是为了使独立创建的计算机程序与其他程序之间能够互操作,并且只要这样做不构成根据本法构成侵权行为或违反除本节之外的适用法律。
  4. 在本款中,“互操作性”一词指计算机程序交换信息以及这些程序之间相互使用已交换的信息的能力。

合理使用仍然适用。但是,为了获得对受版权保护作品的未经授权的访问,不构成合理使用。[2]

最终用户许可协议

[编辑 | 编辑源代码]

最终用户许可协议(或 EULA)是软件制造商与用户之间的一份法律合同。它解释了用户可以使用软件的条款,列出了用户可以和不可以做的事情的条件。这份合同可以规定从可以制作的副本数量到可以进行逆向工程的条件等任何内容。

EULA 和合理使用

[编辑 | 编辑源代码]

合理使用似乎是逆向工程师的安全区域,几乎总是将其用作辩护。但是,EULA 是一份具有法律约束力的合同。如果用户同意与合理使用相冲突的条款,则用户实际上放弃了其合理使用的权利。

在 Davidson & Associates v. Jung [3] 一案中,Ross Combs、Rob Crittenden 和 Jim Jung 对 Blizzard 的协议语言进行了逆向工程,以允许玩家在线玩盗版视频游戏。在本案中,逆向工程人员同意了禁止逆向工程的 EULA 和 TOU(使用条款)。法官认定 EULA 和 TOU 在法律上具有可执行性,并且用户可以根据合同放弃其对产品的逆向工程权利。

著名案例

[编辑 | 编辑源代码]

Atari Games Corp. v. Nintendo of America Inc. [4]

[编辑 | 编辑源代码]

当任天堂推出任天堂娱乐系统时,他们设计了一个程序 10NES,以防止未经授权的视频游戏在 NES 上运行。为了制作授权游戏,您必须获得任天堂的许可,许可协议基本上规定公司每年可以制作多达五款游戏,并阻止他们将相同的游戏出售给其他家用娱乐系统。

雅达利试图破解10NES,以绕过限制性的许可协议。1986年,他们购买了一些NES主机并开始进行逆向工程。通过化学溶解包含10NES的芯片顶层,他们可以使用显微镜物理地观察位并收集一些目标代码。然后将目标代码反编译为源代码。但是,雅达利无法使用此方法完全逆向10NES。

1988年,雅达利以虚假理由向版权局请求10NES源代码的副本,称他们参与了与任天堂的侵权诉讼。在完全了解了10NES程序之后,他们构建了一个程序来击败它。1989年,任天堂对他们提起诉讼,指控其不正当竞争、专利侵权、版权侵权和商业秘密侵权。

雅达利的辩护之一是逆向工程在版权法下属于合理使用。最终,法院裁定,对他们购买的系统进行化学剥离芯片并查看位以获取目标代码的行为属于合理使用。人们预期法院会认定雅达利从版权局盗取源代码的行为构成版权侵权。但是,1994年,雅达利和任天堂庭外和解。

世嘉企业有限公司诉雅酷公司 [5]

[edit | edit source]

此案涉及世嘉的电子游戏机和游戏卡带。游戏卡带包含一个20-25字节的代码段,该代码段被游戏机作为安全措施进行检查。

雅酷公司拆解了三个不同世嘉游戏卡带的通用代码,以找到安全段,并将其包含在竞争的游戏卡带中。

第九巡回上诉法院认为,这种拆解是游戏程序版权中允许的“合理使用”。拆解受版权保护的目标代码,作为检查代码中包含的未受保护的创意和功能概念的必要步骤,是版权法第107条赋予的特权的合理使用:因为拆解是获取程序这些未受保护方面的唯一手段,并且因为雅酷公司有合法兴趣获取这些手段(以确定如何使其游戏卡带与 Genesis 游戏机兼容)。

乔恩·约翰逊案

[edit | edit source]

请描述此案

进一步阅读

[edit | edit source]

参考资料

[edit | edit source]
华夏公益教科书