反向工程

反向工程

产品设计技术再现过程
逆向工程(又称逆向技术),是一种产品设计技术再现过程,即对一项目标产品进行逆向分析及研究,从而演绎并得出该产品的处理流程、组织结构、功能特性及技术规格等设计要素,以制作出功能相近,但又不完全一样的产品。[1]其主要目的是在不能轻易获得必要的生产信息的情况下,直接从成品分析,推导出产品的设计原理。逆向工程可能会被误认为是对知识产权的严重侵害,但是在实际应用上,反而可能会保护知识产权所有者。例如在集成电路领域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证据。
    中文名:反向工程 外文名:Reverse Engineering, 简称:RE 别称:逆向工程或反求工程

名片

反向工程指通过技术手段对从公开渠道取得的产品进行拆卸、测绘、分析等而获得的有关技术信息。反向工程在司法解释中被定义为,通过技术手段对从公开渠道取得的产品进行折卸、测绘、分析等而获得该产品的有关技术信息。为避免该条款被滥用,司法解释同时规定:“当事人以不正当手段知悉了他人的商业秘密之后,又以反向工程为由主张获取行为合法的,不予支持。”

简介

反向工程的方法在集成电路工业的发展中起着巨大的作用,世界各国厂商无不采用这种方法来了解别人产品的发展,如果严格禁止这种行为,便会对集成电路技术的进步造成影响,所以各国在立法时都在一定条件下将此视为一种侵权的例外。

为了教学、分析和评价布图设计中的概念、技术或者布图设计中采用的电路、逻辑结构、元件配置而复制布图设计以及在此基础上将分析评价结果应用于具有原创性的布图设计之中,并据此制造集成电路,均不视为侵权。但是,单纯地以经营销售为目的而复制他人受保护的布图设计而生产集成电路,应视为侵权行为。

对于计算机软件,同样存在着反向工程的问题,其具体步骤大致如下。从目标程序出发,对目标程序进行反编译,使其还原为人可直接阅读的源程序;通过阅读作出该程序的流程图,分析其逻辑结构,最后搞清其全部功能;在了解他人程序结构和功能后,利用这些结果编制出新的程序。

到目前为止,尚无任何国家在其软件保护法中允许对软件实施反向工程的行为。这是因为各国的软件保护多采用版权法的形式。反编译的行为可视为原作品的复制,而重新编制新软件可视为改编作品,依照版权法都是不允许的。因为软件作为一种技术产品要考虑到产品的兼容性,所以绝对禁止反向工程行为可能影响软件技术的发展。

技术

反向工程技术,是以实物(产品)、软件、图纸、程序、技术文件、影像(图片、照片)作为研究对象,应用现代设计理论方法、生产工程学、材料学和有关专业知识(测量学、信号自动处理)进行系统深入的分析和研究,是一种快捷的新产品开发技术。

反向工程技术反求内容广泛,包括:产品的结构和工作原理、产品的材料和力学性能、制造产品的技术资料(图纸、制造工艺、装配工艺、产品检验)、产品技术标准(型号、规格、标准)。其本质是对先进产品进行消化、吸收,再开发和创新,设计和制造出具有竞争力的新产品。缩短新产品的开发周期,提高新产品开发的一次成功率,从而提高企业在市场中的竞争力。

反向工程技术主要应用于:产品(零件)的仿制和复制,复杂产品(零件)的设计,产品(零件)的检验、改进设计,复杂形体的CAD建模,产品设计与快速成形技术等。

芯片工程

芯片反向工程,又称芯片解密(IC解密),单片机解密,就是指单片机攻击者凭借专用设备或自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种专业技术手段,直接提取加密单片机中烧写文件的关键信息,并可以自己复制烧写芯片或反汇编后自己参考研究。这种反向获取单片机片内程序的方式就叫芯片反向工程。

国内有人认为芯片反向工程其实就是抄袭。相比之下,在国外反向工程是伴随着积体电路工业发展起来的,1984年“半导体芯片保护法案(SemiconductorChipProtectionActof1984)”诞生,该法案明确了反向工程的合法性并且严格地区分了侵权和反向工程。中国也于2001年颁布实施了《积体电路布图保护条例》。在芯片反向工程这个问题上为什么在认识上有如此大的差别呢?下面我们将以龙人计算机为例,从芯片反向工程所从事的研究范围和研究手段等方面来透视芯片反向工程。

芯片反向工程其实就是芯片分析,芯片分析涉及三大关键技术∶样品预处理技术;芯片分析软体技术和芯片分析技术(也就是电路分析能力)。以上三项技术相辅相成,缺一不可,其中一项薄弱都会影响到企业分析芯片的能力和水准。

广东龙人列出了芯片分析的流程,我想这有助于大家进一步了解什么是芯片反向工程。

分析流程∶

(1)拍照∶芯片逐层去封装,拍照并对准拼接获得各层芯片照片。

(2)建库∶通过芯片照片提取其中的单元器件建立单元库。

(3)标注∶通过单元库在芯片照片上标记单元器件及器件之间的连接关系。

(4)整理∶把标注出的单元器件整理成为结构清晰的电路图。

(5)层次化∶通过从下至上分析系统的逻辑及机制,从而建立从系统图表到传输级电路的层次化电路图和功能模组。

由上面的分析流程可以看出芯片分析其实就是一个对芯片的解剖过程,在这过程中可以获得芯片的很多相关资料,这些资料可以用来分析学习先进的技术,但是也可以用来复制IC。正如龙人计算机公司总经理夏先生所说“反向工程的不当运用有可能导致侵犯知识产权的后果”。对技术落后的厂商来说实施反向工程可以对先进的技术进行深入的分析、理解,从中找出有规律的东西来,领略设计者的先进设计思想。

如果能进一步消化这些技术并在此基础上进行创新应用到自己的产品上去,那将是一件好事,这样可以缩短自己和先进厂商技术上的差距。如果做反向工程单纯是为了复制IC那就是错误的了。一味地跟在先进技术后面跑没有自己的想法,那永远只能充当掉队者的角色。反向工程在国外还被用来做专利分析为法律提供支援。

PCB

PCB反向工程,又称PCB抄板,即在已经有电子产品实物和电路板实物的前提下,利用反向研发技术手段对电路板进行逆向解析,将原有产品的PCB文件、物料清单(BOM)文件、原理图文件等技术文件以及PCB丝印生产文件进行1:1的还原,然后再利用这些技术文件和生产文件进行PCB制板、元器件焊接、飞针测试、电路板调试,完成原电路板样板的完整复制。

智能卡

分析智能卡的反向工程具有侵入性和破坏性,智能卡被层层刮掉用电子显微镜拍照。这种技术可以完整地揭示出智能卡的硬件和软件部份。主要的问题就是,把所有的东西按正确的顺序放好以找出每一个部件是如何工作的。工程师们用打乱内存位置的方法隐藏密码和操作,例如busscrambling。有时甚至可以在智能卡运行的时候用探针直接测量电压,设计师则用感应器来检测和防止。

破坏支付业务中使用的智能卡很困难,只有大芯片制造商使用那些专业的设备。况且,和其他安全机制例如阴影帐户相比,这种方法回报太低。

与软件

由于“反向工程”一词用在软件工程(简称“软工”)领域中的具体含义模糊不清,Chikofsky和Cross为此写了篇文章,以阐清及区分“反向工程”与各种相近的概念。据文章所述,反向工程是一种分析目标系统的过程,其目的是识别出系统的各个组件以及它们之间的关系,并以其它的形式或在较高的抽象层次上,重建系统的表征(Representations)。软件反向工程也可被视作“开发周期的逆行”。

在此定义下,对一项软件程序进行反向工程,类似于逆行传统瀑布模型中的开发步骤,即把实现阶段的输出(即软件程序)还原回在设计阶段所做的构思。软件反向工程仅仅是一种检测或分析的过程,它并不会更改目标系统(否则就成了软件再工程)。

软件防篡改技术被用于遏制对专有软件进行反向工程及再工程。实际应用中出现了两类反向工程。第一种,软件的源代码可用,但是更高层次的部分几乎没有描述文档或者描述文档不再适用或者丢失。第二种,软件没有可用的源代码,任何能找到它的源代码的努力都被称为反向工程。大部分人都熟悉这个词的第二种用法。软件的反向工程可以使用净室技术(CleanRoomDesign)来避免侵犯版权。

软工中的黑盒测试与反向工程有很多共同点,但黑箱测试人员常供以API以作测试,并且测试的目的就是通过外部攻击,找出程序漏洞和未归档的特性。

反向工程的其他目的包括:安全审查、解除复制保护(又称破解)、绕过消费类电子产品中常设有的访问限制、定制嵌入式系统(例如引擎管理系统)、产品内部修补或更新、给功能不全的廉价硬件(例如某些显卡芯片组)添加额外功能,或仅为满足好奇心。

二进制

对最终程序的二进制代码所进行的反向工程被称为“代码反向工程”,或简称RCE(ReverseCodeEngineering)。例如,我们可以用Jad对Java平台的二进制码进行反编译。一个著名的反向工程案例是,首个由非IBM公司所实现的IBM个人电脑(PC)中的BIOS,这开创了IBMPC兼容机产业,使得IBMPC兼容机成为多年来的主流计算机硬件平台。一个以软件反向工程为乐的团体例子是CORE(ChallengeOfReverseEngineering,意为“挑战反向工程”)。在美国,软件反向工程只要遵守版权法的合理使用规定,都是受保护的。成功的软件反向工程项目有:

1.Samba:一个允许非Windows系统与Windows系统共享文件的开源项目。由于微软没有公开Windows文件共享机制的信息,Samba必须作反向工程,以便在非Windows系统上,仿真出同样的行为。

2.Wine:对WindowsAPI做了同样的工作,

3.OpenOffice:对MicrosoftOffice文件格式作反向工程。

4.ReactOS:竭力在ABI及API上,兼容NT系Windows系统,以便让为Windows所编写的软件和驱动程序可以在其上运行。

5.WindowsSCOPE:用来监测及分析Windows系统内存的实况内容。

二进制软件技术

软件反向工程有多种实现方法,主要有三:

1.分析通过信息交换所得的观察。最常用于协议反向工程,涉及使用总线分析器和数据包嗅探器。在接入计算机总线或网络的连接,并成功截取通信数据后,可以对总线或网络行为进行分析,以制造出拥有相同行为的通信实现。此法特别适用于设备驱动程序的反向工程。有时,由硬件制造商特意所做的工具,如JTAG端口或各种调试工具,也有助于嵌入式系统的反向工程。对于微软的Windows系统,受欢迎的底层调试器有SoftICE。

2.反汇编,即借用反汇编器,把程序的原始机器码,翻译成较便于阅读理解的汇编代码。这适用于任何的计算机程序,对不熟悉机器码的人特别有用。流行的相关工具有InteractiveDisassembler。

3.反编译,即借用反编译器,尝试从程序的机器码或字节码,重现高级语言形式的源代码。

军事上的应用

反向工程经常被用在军事上,用来复制从战场上由常规部队或情报活动获得的别国的技术、设备、信息或其零件。二战和冷战中经常被用到。二战以来的著名例子有:

1.便携油桶:英美军注意到德军有一种设计绝妙的油桶,于是就用反向工程复制了这些桶。这些被泛称为“便携油桶”。

2.图波列夫Tu-4:三架飞往日本的B-29轰炸机迫降到了苏联。苏联没有类似的战略轰炸机,就决定复制B-29。几年后他们开发出了Tu-4,几近完美的复制品。

3.V2火箭:战争结束时V2的技术文档和相关技术被西方联盟俘获。苏联和被俘的德工程师要用俘获的构件重建技术文档和图纸,用于生产这种导弹的代件。R-1启动了战后苏联导弹计划,一直到R-7,并导致了太空竞赛。

4.K-13/R-3S导弹(北约代号为AA-2'Atoll)是苏联对AIM-9响尾蛇的反向工程复制品。早期传说一枚台湾AIM-9B射中中国大陆MiG-17后没有爆炸,这枚导弹留在了机身里,飞行员带着这枚导弹返回了基地。根据苏联公开的数据则是由坠毁在中国境内的美国海军的战斗机残骸上取得。

5.BGM-71TOW导弹:1975年三月,伊朗与休斯导弹系统公司的关于TOW和Maverick导弹合作的谈判因价格体系的分歧停止了,接下来的1979年革命结束了这种合作的所有计划。伊朗成功地对这种导弹进行反向工程,目前正在生产他们自己的复制品:图芬(Toophan)。

相关法律

在美国及其他许多国家,制品或制法都受商业秘密保护,只要合理地取得制品或制法就可以对其进行反向工程。专利需要把你的发明公开发表,因此专利不需要反向工程就可进行研究。反向工程的一种动力就是确认竞争者的产品是否侵权专利或侵犯版权。

为了互用性(例如,支持未公开的文件格式或硬件外围),而对软件或硬件系统进行的反向工程被认为是合法的,虽然专利持有者经常反对并试图打压以任何目的对他们产品进行的反向工程。

为了获取一个有版权的计算机程序中隐含的思想和功能元素且有合法的理由要获取,当只有拆解这一种方法时,根据法律判定,拆解是对有版权作品的公平使用。

中国最高人民法院2007年1月17日公布“关于审理不正当竞争民事案件应用法律若干问题的解释”,首次明确规定:通过自行开发研制或者反向工程等方式获得的商业秘密,不认定为反不正当竞争法有关条款规定的侵犯商业秘密行为。即通过自行研发或反向工程获得商业秘密不属非正当竞争行为,正式为反向工程正名。

相关词条

相关搜索

其它词条