IDA Pro > IDA Pro教程 > 技术问题 > 开放检查:使用逆向工程发现软件现有技术问题

开放检查:使用逆向工程发现软件现有技术问题

发布时间:2022-10-10 15: 31: 51

计算机软件是一种很容易变成可搜索文本的技术,但具有讽刺意味的是,它被视为具有特殊的现有技术问题。虽然在以前的专利、专利申请和非专利文献(NPL)中越来越多地提供对软件的描述,但在专利上下文中,软件本身被认为是无法搜索的丢失的现有技术。正如本文的第一部分所指出的,这个问题与“源代码”的关系不大——当它作为专有商业秘密被严格持有时,它不是现有技术——而是与“对象代码——包括大多数软件产品。

第1部分展示了软件产品包含的文本可以使用称为“字符串”的简单逆向工程(RE)技术提取。该文本可以依次放入可搜索的现有技术数据库中。该产品可能是大众市场软件,例如Microsoft Windows或Office、Adobe Photoshop、iPhone应用程序、网站上的交互式Flash电影,或位于相机内的“固件”。本文的第二部分将首先描述了几种从软件产品中提取或生成文本的额外RE技术,然后将这种类型的现有技术与专利权利要求语言进行比较。然后,本文的重点转向了将逆向工程软件产品用作现有技术所引发的几个法律问题:

●后来通过可再生能源发现的现有技术的证据,特别是迄今为止,有多可靠?

●如果早期公共产品的某个特征后来才通过RE被发现,那么该特征是否可以合理地为102(a)或102(b)目的而被描述为先前使用或知识、在售或印刷出版物?本领域的普通技术人员必须能够(容易地?)在当时发现该特征吗?

●如果一个功能可以作为技术问题通过RE发现,但产品附带非RE许可语言,那么这种语言本身是否足以使产品的内部保密,因此不是现有技术?

●从软件产品中提取或生成的字符串数据库是否属于侵权衍生作品,或者如此使用的片段是否受合并原则下至多“薄弱”的版权保护?至少,来自代码的字符串数据库是否合理使用,类似于Google对网站文本的索引或缓​​存?

 

信息从软件产品中获取

第1部分中提到的技术从软件产品中提取一些文本,或者从产品中容易找到的数字推断文本。提取的文本包括错误消息,包括称为“断言”的内部错误消息(通常包含源代码片段);产品中遗留的调试信息;使用的API(应用程序编程接口)和协议的名称;用于构建产品的源代码文件的路径名;和嵌入式脚本。“生成的”文本(根据其他文本或产品中的数字数据估算到产品的文本)包括服务、协议和算法的名称。

 

这些技术依赖于极其简单的算法,例如“字符串”,甚至可能不被许多程序员视为RE,也不符合RE或“end-用户许可协议-no-RE条款。甚至一些软件RE的狂热反对者也将他们的反对限制在更复杂的代码“反汇编”或“反编译”技术上。

 

反编译尝试重建原始源代码,并且对于Java和Microsoft.NET代码等虚拟机语言是可行的(以及使用NSA的Ghidra反编译器,例如C/C++Windows代码,尤其是在调试符号可用时)。即使这样,反编译也无法返回原始源代码,就像从汉堡包中检索一头牛一样。当源代码被“编译”以形成交付给客户的产品时,大部分源代码——尤其是程序员在源代码中的注释——都未被使用。

 

使用“本机”机器代码,例如直接在英特尔处理器上运行,使用反汇编而不是反编译。反汇编不会尝试恢复原始源代码,而是以更易读的形式显示机器代码,并根据代码中的交叉引用标记代码区域。虽然反汇编甚至反编译都不能从软件产品中检索原始源代码,这些技术仍然可以产生与现有技术搜索相关的信息。

 

在专利侵权案件中,专家可能会被要求对代码进行反汇编或反编译,尤其是在对手发现源代码之前。反汇编和反编译通常会产生过多的材料。在一个案例中,我们发现网站上使用的一个中等大小的Flash SWF文件是由近400个ActionScript源代码文件构建而成,总计超过50,000行代码。通过将文件缩减为一组可搜索的“签名”,专家的分析可以部分自动化,对应于代码中的每个子例程。这样的签名也可以基于不寻常的代码序列或更高级别的机器指令,其名称可能表示发明的元素或步骤。

 

动态逆向工程

在上面和第1部分中描述的技术中,软件产品被视为要检查的文本,而无需运行该产品,通常甚至无需安装它。一个是阅读文本,可能需要翻译成更容易理解的语言。这些读取他人软件产品的各种方式(例如字符串、元数据提取和反汇编)统称为静态逆向工程。

 

另一组技术,动态逆向工程,涉及在第二个程序的控制下运行感兴趣的软件程序,该程序测试或跟踪第一个产品的行为。动态RE工具包括调试器、网络监视器(数据包嗅探器)、文件监视器和API跟踪实用程序。动态RE似乎特别适用于方法/过程权利要求,但也适用于设备权利要求。

 

许多公共网站——其前端代码在浏览器的“查看源代码”窗口中可见,使用可供Web开发人员使用的工具进行探索,或(在Flash SWF、.NET的情况下,或Java程序)可反编译-具有大型服务器后端(例如,ASP),即使其目标代码不可访问,至少在发现之前是这样。客户端和服务器之间的流量可以使用Fiddler或Wireshark等工具进行监控,各种“黑盒”技术可以帮助推断服务器代码。但是请注意,如果代码不在公众视野范围内,那么它可能一开始就不是现有技术。而目标代码是一种“不通知的公共用途”(见下文),而服务器代码则更接近于秘密用途。

 

Dynamic RE的版权影响

从版权的角度来看,动态RE有时比静态RE更受欢迎,因为动态RE只是观察产品的功能,而不是查看产品内部(在查看过程中,可能暂时复制产品的一部分)。但是因为动态RE需要安装和运行软件产品,所以它比静态RE更可能需要同意“clickwrap”许可的动议。

 

在后期进行的动态RE也存在可靠地重构包括网络组件在内的软件环境的问题,因为它存在于现有技术时期。总体而言,静态RE比动态RE更适合揭露现有技术,而动态RE更适合调查专利侵权索赔。

 

比较代码中的字符串与声明中的限制

一旦从软件产品中提取或生成可搜索文本并将其放入现有技术数据库中,就可以根据文本检查专利权利要求的元素或步骤,就像任何文档中的文本一样。软件现有技术数据库可能包含很少的完整句子和许多小的文本片段。专利检索通常涉及与专利权利要求的元素或步骤相对应的单词或短语的组合,以及可能的同义词。这种初步搜索产生“线索”以进行更仔细的检查,这与专利搜索者已经在做的事情并没有根本的不同。

 

例如,以具有以下限制的专利权利要求为例:媒体频道、预定义剧集、订阅、下载更新、检查可用空间和删除早期剧集;该专利要求2003年11月提交的申请的优先权。

 

在一组有限的Microsoft产品中搜索了包括以下术语的文本组合:剧集、频道、订阅、更新和下载。结果在一个名为tvx.exe的Windows 98程序中找到,并在它引用的两个模块中找到,名为commmstv.dll和msepg.ocx。这些1998文件指的是“Microsoft TV Services”和“WebTV for Windows”。tvx.exe文件包含用于操作电视数据SQL数据库的嵌入式SQL源代码。在微软产品中进一步搜索,包括1998年的微软“平台SDK”(软件开发工具包),产生了与1990年代早期名为“微软指南”的电视项目相关的公开可用源代码文件,这是一个EPG(电子程序)指南),支持剧集、频道、订阅等。

 

有问题的专利似乎没有明确提到微软,也没有引用转让给微软的专利,因此这可能是一个需要仔细检查的富有成果的领域。虽然很难得出结论,但这个小例子说明了通过产品代码搜索以查找潜在现有技术的基本方法。

 

即使在单一的现有技术参考中找到了所有元素或步骤,搜索者也必须确定它们是否以适当的方式组合在一起。专利权利要求不是零件清单或组件的集合。例如,具有内置调试器的关系数据库不会预期对具有关系数据库后端的调试系统的要求。

 

软件词典

软件产品包含与专利相关的字符串的可能性有多大,因此可以使用专利权利要求来指导从软件产品中提取的文本的搜索?

 

权利要求可能比发明人实施的范围更广,反映了专利代理人在揭示最广义或更窄的实际发明方面的(未得到充分承认但真正的)创造性作用,以避免现有技术。检索非专利文献(NPL)通常需要使用从属权利要求或专利说明书中的具体示例(最好是专有名词)充实权利要求。特别是方法声明往往更抽象,更难与NPL对齐。

 

程序员使用的语言通常与软件专利中包含的语言不同。在专利可能涉及复制命令或数据包的情况下,从产品中提取的文本可能涉及cpy、cmd或pkt。程序员可能会使用诙谐的术语,例如kill、crash、barf和magic,而专利可能会提到删除、失败、错误消息和不透明的数值。代码的拼写错误(尤其是阅读障碍)比专利文件还要多。

 

同时,软件专利包含与软件本身相同的奇怪术语。类似于普通词但具有特殊软件含义的术语,例如线程、假脱机、哈希、盐和thunk,出现在软件专利和代码中,具有相同的含义(受权利要求的解释)。甚至整类专利的标题都包括程序员使用的术语,包括VxD、马尔可夫和预取。

 

专利说明书通常包含有助于缩小搜索范围的代码片段,否则可能是令人麻木的宽泛的权利要求术语。例如,虽然涉及“拦截软件组件技术”的步骤很难与代码中出现的内容保持一致,但专利规范提到了“vnodeops”,这是与拦截文件操作相关的代码参考。

 

在专利权人成为“他们自己的词典编纂者”的能力之间,对权利要求含义的内在而非外在(例如字典)证据的偏好,语言无法充分捕捉发明的边界(费斯托),以及计算机程序员在其代码中使用非标准命名的趋势,任何软件现有技术搜索系统都需要广泛的词典,包括同义词、缩写词和类上下文。诸如ROM、CPU和DVD等经常出现的术语被打折。

 

因此,软件词典提出了一些难题,但考虑到软件的重要性,这些问题值得解决。

 

有多少参考文献?

使用软件作为现有技术提出了一个不同于印刷文档的问题:在软件上下文中什么构成了单一参考?黑字法规定:“仅当权利要求中规定的每个要素都在单一现有技术参考文献中明确或固有地描述时,才能预期权利要求。”如何确定软件产品中单个引用的边界?

 

单个软件产品(例如Windows)可能包含数百甚至数千个不同的模块,每个模块在磁盘上都是一个单独的文件。Windows中的所有内容都是单个参考的一部分吗?这听起来不对,至少在应用于通常不一起使用的Windows部分时。但是,每个模块都不应该被视为单独的参考,这样,为了预期,专利权利要求的每个限制都必须在单个模块中找到。更好的观点是单个软件参考包括给定的模块,以及模块所依赖的那些。交付给客户或在流程/服务中使用的单个二进制/对象文件是软件“参考”的合理划分点——可以说比单个源文件代码更重要。

 

如果证明从可以说是不同的代码片段形成单一的现有技术参考过于复杂——尽管它包含一个产品,或者一起使用以产生单一的结果——分析可以从§102开始预期(缺乏新颖性需要单个参考)到§103显而易见性(可以组合多个参考以证明必要的动机和显而易见性)。POSITA(本领域普通技术人员)可能具有组合参考的隐含动机,特别是那些已经具有现实世界相互关系的参考。

 

软件参考的日期和可靠性

至关重要日期。;在制造的CD-ROM上找到的文件日期/时间戳几乎没有问题同样适用于在不可写软盘上找到的文件日期/时间戳,或者当可以制作软件的原始收缩包装副本时。但是,供应商提供的日期可以更改,甚至某些供应商提供的日期是不正确的。因此,软件现有技术数据库将为每个代码文件收集尽可能多的日期:创建日期;最后访问和最后写入的日期;文件中嵌入的任何©日期;文件中内置的编译器/链接器日期;和物理媒体和包装上的日期。

 

贸易期刊中的评论和广告可能与产品日期有关。对于更新的软件,在线资源可以提供代码文件“在野外”首次出现的日期。

 

当被视为印刷出版物时,软件现有技术是电子出版物。与美国相比,欧洲对电子出版物的可靠性更为关注,但即使是EPO也将日期而非内容视为主要的可靠性关注点。互联网上发布的材料的公共可访问性是一个单独的问题。

 

查找旧代码

现有的与软件相关的现有技术NPL(非专利文献)库不是基于软件产品本身,而是基于软件的描述。此外,这种描述性材料主要来自学术而非贸易出版物,以及来自摘要而非全文。在使用贸易出版物的范围内,经常伴随出版物中文章的源代码,如Microsoft Systems Journal、Dr.Dobb’s Journal或MacTech,通常是缺失的最重要的广告。有几个有用的“防御性出版物”档案,包括一个专门关注软件现有技术的档案,同样,这些档案依赖于从软件本身中删除的几个步骤的印刷出版物。

 

考虑到淘汰现有技术的动机,诉讼人在哪里可以找到较旧的软件产品?

 

一些代码保存协会和计算机博物馆拥有大量软件产品。但除了一个值得注意的例外,这些通常最多按产品名称索引,而不是按产品中的文件名,更不用说每个文件的文本内容。普通图书馆的目录又被WorldCat编目,令人惊讶的是,它们经常拥有软件标题,尽管可能不是出租的。有一次,国会图书馆有一个机器可读的馆藏阅览室,该阅览室已关闭。

 

向公众出售的产品通常可以在eBay、Amazon.com上的旧电脑书籍的背面以及加利福尼亚州桑尼维尔的Weird Stuff Warehouse等商店中找到。处理案件的专家的地下室和壁橱是相关现有技术的天然来源,但对约会、可靠性和监管链有一些警告。

 

除了它的“Wayback Machine”(如果人们已经知道感兴趣的文件名的话,它是一个过时的目标代码的来源),Internet档案馆还有一个“软件档案馆”项目,这是软件存档豁免的推动力DMCA反规避条款。不幸的是,虽然档案本身显然包含大量较旧的Apple、Atari和Commodore产品,但目前公共收藏主要由TUCOWS和CD BBS档案主导,这些档案已经在其他地方可用。

 

软件档案管理员面临的一个问题是不确定该材料的用途。在某些情况下,仅保留旧代码以便仍然可以访问旧数据。这些档案的设计并未考虑专利现有技术检索;索引不包括产品名称以外的足够详细信息。

 

美国政府的国家软件参考图书馆(NSRL)是美国国家科学技术研究院(NIST)的一部分,是来自大约1,400家供应商的大约21,000种不同软件产品的集合,被处理以获得唯一标识软件包中文件的数字签名。NIST分发这些签名主要供执法调查人员使用,作为忽略检查刑事案件中查封的计算机系统时这些与产品相关的文件名列表在某些现有技术情况下可能会有所帮助,但NSRL过滤商业代码的目标几乎与软件现有技术搜索者所需要的完全相反。

 

如果当时没有人看到,它还是“旧”艺术吗?(答案:当然可以;问题是PHOSITA在当时是否可以看到它,可能是通过逆向工程)

供应商A将功能X放入其产品P中,向公众出售,但只有A的一些员工知道X。这发生在时间T1。一段时间后,在T2,供应商B收到X的专利,B起诉C侵犯专利权。现在,C在时间T3聘请了一位专家,他对P进行逆向工程并发现X。P是否是使B的专利无效的现有技术?换言之,如果较早的公共产品的某个特征后来才通过RE被发现,那么该特征是否可以合理地被定性为可能使后来的专利无效的现有技术?

是黑字法公开;在某人的厨房里的桌布下面画的一幅画,当时不为拖拉机牵引艺术所知,不是现有技术。根据黑体字法,“秘密现有技术”有重要的例外情况。

 

然而它一直在发生:在T3时,C发现了一份可追溯到T1时间的非常晦涩的文档,这是现有技术,只要它不是B(或A,就此而言)的内部备忘录。

 

在一方面是秘密,另一方面是现成的可用性之间,只有便利或模糊的程度。现有技术状态不取决于公众当时是否真正访问了参考文献,而是相关公众是否可以拥有。现有技术不需要经过检查,只要它可以接受检查。

 

因此,问题就变成了,如果一个特性后来才使用RE发现,它会更早发现吗?本领域的普通技术人员必须能够(很容易地?)当时发现该特征吗?或者,如果当时没有人看到它,这是否可能是暗示性的间接证据,表明它在时间?

 

请注意,这个问题不需要询问专利权人自己的专利前代码,因为即使是发明人的秘密使用也受102(b)销售条的约束。

 

此外,如果第三方早期的发明活动“有益于”公众,那么至少在102(g)隐藏分析下,这个问题变得无关紧要。例如,一个高尔夫球,其覆盖物由秘密材料制成,即使该高尔夫球覆盖物的秘密只是在之后才公开,因为高尔夫球本身(当然还有它的外部)是公开的。相比之下,用于生产公共产品的隐藏过程——例如制造被子的机器,出售被子,但机器不是,机器的创造性工作无法从被子——不是现有技术。一方面生产公共产品的隐藏的发明过程(不是现有技术)与另一方面隐藏在其中的发明的公共产品(现有技术)之间存在重要区别。在绗缝案例中,公众可以享受发明的成果或产出,但没有能力接触到发明本身,因为发明和产出是可分离的,发明与产出是分不开的。在高尔夫球案中,发明本身就是公开的,而当时公众只是没有观察到。

 

软件产品在哪里适合?有些就像用来生产公共被子的秘密绗缝机。特别是,在客户端/服务器产品中,代码在服务器上运行,仅将其输出传递给客户端。甚至服务器上的目标代码也是不可访问的,除非客户端可以通过动态RE理解服务器代码(见上文)。被公众保留的软件,无论是源代码还是对象形式,通常都不是现有技术。

 

然而,许多目标代码软件是向公众传播的,公众可以通过RE学习的是现有技术,就像高尔夫球的“秘密成分”是现有技术一样,如果高尔夫球本身足够平视。正如高尔夫球案中所指出的那样,“即使可能没有明确披露发明概念,但当文章本身可供广大公众自由访问时,可以公平地假设其秘密将被潜在的早在专利到期之前的竞争对手。

 

在102(g)的背景下,这个由公共产品的未记录部分组成的领域被称为“非告知性公共使用这个概念可以追溯到19世纪案例,例如,保险柜中的螺栓布置被认为是现有技术,尽管“它们确实是在保险柜完成后隐藏起来的,并且需要破坏保险柜才能将它们带入视野.但这并不是隐藏它们或秘密使用它们。它们没有更多的隐蔽性,与任何合法使用它们密不可分。”

 

但是,公共产品的一个隐藏得很好的组件(可能需要对产品进行破坏性测试)不是秘密,而只是一种不告知公众的使用,至少在真正发现秘密之前,这真的正确吗?既然已经注意到机密通常不是现有技术,那么即使是非常公开的软件产品(例如Microsoft Windows)的内部结构也不被视为商业机密吗?如果供应商C在T3时知道了这个秘密,在T1时它不仍然是商业秘密吗?在有人真正了解它之前,这难道不是一个秘密,而不仅仅是当他们可以想象到的时候?

 

毕竟,秘密永远只是延迟或时机的问题。X在T3时刻被发现,甚至很容易,但在T1时刻,它并没有成为非秘密。[Epstein案例告诉我们,软件现有技术的日期可以从后来的摘要中关联回来,因此可能相同的关联回溯适用于代码的某些固有64]特征,只是等待检查。但Epstein可能与产品的肤浅方面有关,而不是从最简单的RE中学到的东西。在T3学习秘密与在T1发现非秘密有什么关系?

 

这个问题——在时间T3学习一个秘密是否“与”在时间T1的非秘密发现“相关”——牵涉到更大的问题:商业秘密/专利交互、在先用户的防御、和基本披露与.发明政策冲突,专利制度应该奖励公开发明的人,而不是保密的人,但专利应该授予发明,而不是已经完成的事情。

 

商业秘密法提供了一个简单的答案。统一商业秘密法(UTSA)的大多数法规都包括作为商业秘密定义的一部分,信息的价值源于“无法通过适当的方式轻易确定”(RE通常被视为适当的手段)。信息作为商业秘密的地位,不取决于它是否已经被实际确定,而是取决于它是否可以通过适当的方式轻松确定。

 

因此,问题变成了在T3确定的信息是否可以在更早的时间,在T1确定。在发明或关键日期之前,POSITA是否能够在没有(从稍微不同的领域类推)过度实验和新的发明活动的情况下轻松发现信息?那要看:

 

在T3的目标代码中逐字找到的字符串本来就存在于T1中,如果有人决定在文字处理器中查看目标代码,就可以清楚地看到。很容易确定。

 

来自外部文档的文本并根据代码中的字符串或数字估算为目标代码,如果文档当时存在,并且POSITA会知道查看那里,则很容易确定。考虑到误报的可能性(例如,由于与Blowfish算法无关的原因,数字243FF6A88和85A308D3以某种方式出现在代码中),对于继承性存在争论的空间。

 

通过反汇编或反编译在T3获得的信息,如果反汇编或反编译器在T1可用,则在T1很容易确定,至少只要理解列表在POSITA的技能范围内,但可能并不总是如此。

 

由于难以在时间T3可靠地重建T1计算环境,来自动态RE(例如网络监视器)的信息首先不太可能成为问题。但是,如果T3的专家能够证明他已经复制了T1环境,那么根据定义,T1的POSITA几乎可以做到这一点。

 

在某些时候,在T3时通过RE收集信息非常困难,这表明在T1时无法检测到它。如果当时无法实现必要的可再生能源(包括出于法律原因;见下一节),该技术实际上与锁定在公众视野之外的秘密机器相同。仅通过英勇的RE努力收集到的信息,例如,RE的时间和成本超过商业秘密所有者防止RE的合理费用,不是“容易确定的”。一些RE具有足够的创造性,发现甚至供应商都不知道产品的特征,它可能被视为做出新的发明发现,而不仅仅是发现现有技术。即使在这里,也不要求其所有者知道现有技术。

 

如果现有技术软件被描述为印刷出版物——考虑到电子出版物的现有技术状态——那么它必须在当时使POSITA能够实施该发明,市场上的工作产品可​​能会起作用。

 

此外,作为现有技术,参考必须已经可用或可访问,不仅在物理上,而且在逻辑上。在大学论文案例中,将论文放在图书馆的书架上是不够的;必须对参考资料进行编目或编入索引,以便当时的POSITA能够找到它——如果他事后已经知道确切的查找位置,他不仅会找到它,而且如果他还不知道它的位置,他就会真正找到它。地点。同时,只需要编目标题,而不是全文内容。与软件的类比是,知道公共产品的竞争者能够检查目标代码。

 

总而言之,通常隐藏的东西可能仍然是公开的。当然;参加知识产权调查课程的每个学生都从19世纪的紧身胸衣案例中知道这一点,在该案例中,即使是内衣的一部分也被公开使用,因为它不受发明人的控制。

 

“Shrinkwrapped”代码真的公开了吗?

软件产品通常带有“shrinkwrap许可协议”或限制逆向工程的最终用户许可协议(EULA)语言。因为软件是一种文本形式,所以限制RE实际上会限制阅读文本,至少过于密切。事实上,一些供应商认识到这一点,不仅试图限制通常的“逆向工程、反汇编和反编译”三重奏,而且声称用户不会“分析”产品。

 

这些no-RE条款与上一节关于后来通过RE发现的技术可以构成现有技术的结论有何关联?直接关注的不是这种语言是否禁止逆向工程以发现现有技术(见下一节)。相反,这种担忧可以追溯到Gillman v.Stern,法官Learned Hand指出早期的机器“始终尽可能严格保密,与它的开发保持一致。一般来说,每个人都被小心地排除在使用这四台机器的Haas商店之外。同样,在作为现有技术的石油勘探的著名案例中,法院强调没有任何故意隐瞒。问题是软件供应商在产品上放置“您可能不分析”语言是否足以使产品的内部结构保密,从而使产品的内部结构不现有技术。

 

除了一个例外,这种语言被广泛认为是不可执行的,通常甚至带有其可能不可执行的标记:“您不得分析、逆向工程、反编译、反汇编软件或寻求获取软件的源代码。任何方式,但适用法律规定的范围除外。”至于适用法律,如前所述,加利福尼亚州的统一商业秘密法明确规定,逆向工程本身并不是学习商业秘密的不当手段.重要的例外是非公共软件,例如用户必须提供签名的有限“beta”测试。即使在这里,像字符串提取这样的简单方法甚至可能不构成“逆向工程”,因为许可语言定义了这个术语。

 

但是,此类条款的一般不可执行性是否真的解决了这样的问题,即条款的存在是否使隐藏在目标代码中的信息成为秘密,至少在有人决定忽略该条款之前?是否存在no-RE条款是否会使信息隐藏在其他公共软件中,POSITA无法访问或获得这些信息,类似于内部文档,它不是印刷出版物——无论有多少副本分布式的?

 

然而,虽然公司的专有源代码是内部文档,但隐藏在市场上可用的目标代码中的信息(没有RE收缩包装)是完全不同的:一个广泛可用的公共文档,标记为“机密”。â€如果任何人都可以通过支付一些金额来索取它,那么它对谁保密?

 

类似于机密技术?

软件场景——被指定为机密但在市场上进行的活动——可以在与政府机密技术的现有技术状态相关的案例下进行分析。

 

首先,机密技术不是现有技术。即使后来被维基解密,在它仍然保密的时期内它也不会是现有技术。

 

但其次,持有人本人必须采取措施对材料保密。这类似于商业秘密法中的合理安全预防措施(RSP)。例如,军事基地图书馆中的文件,有安全保障,需要图书馆员的批准,仍然是印刷出版物,因为它们不受限制地分发给商业公司和个人。一般来说,如果“相关公众感兴趣的成员愿意的话,他们可以获取[它]”,即使是收费的,信息也是可以公开获取的。

 

最近对软件的应用是Ex parte ePlus,其中BPAI认为ePlus的论点是用户手册是专有的:“大多数软件和此类软件附带的手册都包含对复制和进一步分发的限制,但是不会上升到被视为机密披露的那些项目的水平……[这]将要求限制谁可以购买或以其他方式获得特定文档……。购买软件以获得手册的要求是其成本和不是它的可访问性。”

 

BPAI区分了IMX诉Lendingtree,其中发现抵押相关软件的用户手册不是印刷出版物,因为在IMX中没有独立证据表明该手册(加盖“高度机密”)是可公开访问,而在ePlus中,审查员“清楚地表明[ed]软件包已售出”。

 

 可以类比专利(或商业秘密)法规定的公开使用的实验性使用例外,其中发明人对发明的控制是确定公开使用该发明是否真正具有实验性的关键因素,或公共用途。正如没有控制的实验声明不会取消公共使用一样,保密声明,没有对传播的限制,也不会产生保密性。保密具有客观和主观成分,并且对可能存在于数百万台机器(包括开放访问网吧)上的目标代码施以保密咒语ipse dixit或EULA(最终用户许可协议)中的no-RE条款。

 

 收集现有技术是否侵犯版权?

 另一个潜在的担忧是从软件产品中提取的文本构建的数据库是否会构成侵犯版权的衍生作品。

 

 首先,数据库包含代码的摘录,而不是整个代码;它不是作为离散软件的集合,而是单词和短语的一致性,链接回找到单词或短语的文件的信息。在许多情况下,相同的字符串位于来自多个供应商的文件中;在某些供应商的情况下,他们的字符串很少是唯一的。

 

 由于数据库包含来自代码的片段,这些片段中的大多数在从中提取它们的产品中具有某些功能目的,因此将根据版权合并原则进行分析。在Lotus v.Borland案中,甚至发现包含菜单层次结构的大量469个字符串也具有功能性,类似于VCR按钮上的标签。这里讨论的现有技术软件数据库在很大程度上收集了这样的标签,例如API调用的名称、错误消息、调试文本以及菜单和对话框项。Â版权保护将是“单薄的”,主要局限于文本的非约束部分,例如未使用的“死代码”。

 

 或者,分析将遵循图书馆保存的合理使用,以及谷歌等搜索引擎的缓存。鉴于数据库的目的与专利相关,并且还可用于发现软件版权侵权和开源违规,诉讼特权将是进一步的抗辩。

 

 现有技术软件数据库

 作者在多个案例中使用了这个现有技术软件数据库的初步版本,包括作者在内的一群软件工程师正在建立一个更广泛的数据库。代码就在那里;它是现有技术;它可以被索引和搜索。

 

作者:安德鲁·舒尔曼

原文地址:https://www.softwarelitigationconsulting.com/articles/open-to-inspection-using-reverse-engineering-to-uncover-software-prior-art-part-2/

展开阅读全文

标签:IDA

读者也访问过这里:
邀请您进入交流群 点击扫码
400-8765-888 kefu@makeding.com

专业销售为您服务

欢迎添加好友,了解更多IDA优惠信息,领逆向工程学习资料礼包1份!
热门文章
exe反编译工具哪个好?反编译能力强的工具盘点
随着软件技术的发展,exe(可执行文件)已经成为了电脑、手机等多个平台上的主要软件运行格式,而对于exe文件的反编译也成为了逆向工程中不可缺少的一个步骤。本文将介绍一些常用的exe反编译工具,并评价其优缺点,帮助读者选择合适的工具。
2023-04-12
idapro怎么改为中文
IDA Pro是一款功能强大的反汇编和反编译工具,广泛应用于逆向工程和软件开发领域。在使用IDA Pro时,如果我们不习惯英文界面,可以将其改为中文界面。本文将介绍IDA Pro怎么改为中文界面。IDA Pro界面改成中文主要有两种方法,下面是详细介绍。
2023-04-19
c++反编译工具有哪些
反编译C++代码的工具一般是针对可执行文件和库文件的反汇编和逆向分析工具。本文将给大家介绍c++反编译工具有哪些的内容。市面说的c++反编译工具有很多,下面介绍几款使用认识较多的软件。
2023-04-23
ida如何转伪代码 ida伪代码怎么看
IDA Pro是一款常用的反汇编和反编译工具,可以帮助我们分析二进制文件的实现细节和执行过程,以便更好地理解程序的执行过程和逻辑。在进行逆向工程的过程中,我们经常需要将反汇编结果转换为伪代码,以便更好地进行分析和修改。本文将介绍如何使用IDA Pro转换为伪代码,并简单讲解ida伪代码怎么看。
2023-04-14
ida怎么查找字符串 ida字符串窗口快捷键
在数字化时代,逆向工程作为解密软件和分析程序的关键技术,正日益受到广泛关注。在逆向分析的过程中,IDA(Interactive DisAssembler)是一款备受推崇的工具,它为逆向工程师们提供了强大的功能和灵活的操作。本文将带您深入探讨如何在IDA中查找字符串,优化字符串窗口的使用,并探讨IDA如何将变量转换成字符串,帮助您更加熟练地驾驭这一工具,为逆向分析的世界增添一抹精彩。
2023-09-27
最新文章
IDA怎么提取程序的版本信息 如何用IDA软件分析程序的异常行为
你要说IDA,大家可能都会觉得它是逆向工程的神器。无论是分析程序的版本信息,还是抓取程序中的异常行为,IDA几乎都能帮你搞定。今天,我就来跟大家聊聊IDA怎么提取程序的版本信息,如何用IDA软件分析程序的异常行为,还有IDA反汇编功能怎么定位代码。掌握了这些技巧,程序分析也能变得更轻松,效率自然提升。
2024-12-10
怎么用IDA软件反汇编功能学习汇编指令 IDA反汇编功能如何进行多平台二进制分析
说到反汇编分析,很多人第一时间就会想到IDA。这款工具可以说是做逆向工程的“神器”,不管是学习汇编指令还是分析二进制文件,都非常给力。如果你是个初学者,刚接触反汇编,可能会对IDA的一些功能感到陌生,比如怎么用IDA软件反汇编功能学习汇编指令 IDA反汇编功能如何进行多平台二进制分析。别急,今天就带你一步步搞清楚。
2024-12-02
怎么用IDA软件反汇编功能来理解汇编指令 IDA反汇编如何分析软件的异常处理机制
你听说过IDA吗?它可不是一个普通的软件,而是逆向工程界的“老大”!很多程序员、黑客、研究员都用它来破解、分析程序。今天,咱们就来说说:怎么用IDA反汇编,搞懂这些看似难懂的汇编指令,分析程序出现问题时是怎么应对的。
2024-11-27
IDA反编译功能在软件安全审计中有何作用 怎么用IDA反编译功能分析程序的优化级别
在做软件安全审计的时候,程序的安全性和性能优化一直都是大难题。而说到分析程序的二进制代码,IDA反编译工具简直就是安全审计师的“瑞士军刀”。通过反编译,IDA能把难懂的机器码翻译成汇编语言,找出漏洞和优化空间。所以,今天我们就来聊聊“IDA反编译功能在软件安全审计中有何作用 怎么用IDA反编译功能分析程序的优化级别”,一起看看IDA到底有多强大。
2024-11-14
IDA反汇编如何进行二进制补丁分析 IDA反汇编后如何对程序进行静态分析
在软件安全和逆向工程领域,IDA Pro是一款非常受欢迎的工具。它能帮助我们深入分析二进制文件,今天,我们就来聊聊“IDA反汇编如何进行二进制补丁分析 IDA反汇编后如何对程序进行静态分析”这两个话题。希望通过这篇文章,能够让大家更好地运用IDA来进行相关分析。
2024-11-05
IDA软件反编译功能如何研究软件的动态链接库 IDA怎么反编译提取软件程序的调用关系图
在软件开发和安全领域,IDA软件真的是个非常强大的反编译工具。了解它的各种功能,尤其是在研究软件的动态链接库(DLL)时,绝对能让你的工作事半功倍。今天,我们就来聊聊“IDA软件反编译功能如何研究软件的动态链接库 IDA怎么反编译提取软件程序的调用关系图”这个话题,让你对IDA有更深入的认识。
2024-11-05

通过微信咨询我们

欢迎添加好友,了解更多IDA优惠信息,领取逆向工程学习资料礼包1份!