反向工程指通过技术手段对从公开渠道取得的产品进行拆卸、测绘、分析等而获得的有关技术信息。反向工程在司法解释中被定义为,通过技术手段对从公开渠道取得的产品进行折卸、测绘、分析等而获得该产品的有关技术信息。为避免该条款被滥用,司法解释同时规定:“当事人以不正当手段知悉了他人的商业秘密之后,又以反向工程为由主张获取行为合法的,不予支持。”
基本介绍
- 中文名:反向工程
- 外文名:Reverse Engineering,
- 简称:RE
- 别称:逆向工程或反求工程
简介
反向工程(Reverse Engineering, RE)也称逆向工程或反求工程,是相对于传统的产品设计流程即所谓的正向工程(Forward Engineering, FE)而提出的。正向工程是泛指按常规的从概念(草图)设计到具体模型设计再到成品的生产製造过程。反向工程常指从现有模型(产品样件、实物模型等)经过一定的手段转化为概念模型和工程设计模型,如利用三坐标测最机的测量数据对产品进行数学模型重构,或者直接将这些离散数据转化成NC 程式进行数控加工而获取成品的过程,是对已有产品的再设计、再创造的过程。
反向工程指从他人的产品入手,进行分解剖析和综合研究,在广泛蒐集产品资讯的基础上,通过对儘可能多的同类产品的解体和破坏性研究,运用各种科学测试、分析和研究手段,反向求索该产品的技术原理、结构机制、设计思想、製造方法、加工工艺和原材料特性,从而达到从原理到製造,由结构到材料全面系统地掌握产品的设计和生产技术。
技术
反向工程技术,是以实物(产品)、软体、图纸、程式、技术档案、影像(图片、照片)作为研究对象,套用现代设计理论方法、生产工程学、材料学和有关专业知识(测量学、信号自动处理)进行系统深入的分析和研究,是一种快捷的新产品开发技术。
反向工程技术反求内容广泛,包括:产品的结构和工作原理、产品的材料和力学性能、製造产品的技术资料(图纸、製造工艺、装配工艺、产品检验)、产品技术标準(型号、规格、标準)。其本质是对先进产品进行消化、吸收,再开发和创新,设计和製造出具有竞争力的新产品。缩短新产品的开发周期,提高新产品开发的一次成功率,从而提高企业在市场中的竞争力。
反向工程技术主要套用于:产品(零件)的仿製和複製,複杂产品(零件)的设计,产品(零件)的检验、改进设计,複杂形体的CAD建模,产品设计与快速成形技术等。
使用原因
需要反向工程的原因如下:
1.接口设计。由于互操作性,反向工程被用来找出系统之间的协作协定。
2.军事或商业机密。窃取敌人或竞争对手的最新研究或产品原型。
3.改善文档。当原有的文档有不充分处,又当系统被更新而原设计人员不在时,反向工程被用来获取所需数据,以补充说明或了解系统的最新状态。
4.软体升级或更新。出于功能、合规、安全等需求更改,反向工程被用来了解现有或遗留软体系统,以评估更新或移植系统所需的工作。
5.製造没有许可/未授权的副本。
6.学术/学习目的。
7.去除複製保护和伪装的登录许可权。
8.档案丢失:採取反向工程的情况往往是在某一个特殊设备的档案已经丢失了(或者根本就没有),同时又找不到工程的负责人。完整的系统时常需要基于陈旧的系统上进行再设计,这就意味着想要集成原有的功能进行项目的唯一方法便是採用反向工程的方法分析已有的碎片进行再设计。
9.产品分析:用于调查产品的运作方式,部件构成,估计预算,识别潜在的侵权行为。
晶片
晶片反向工程,又称晶片解密(IC解密),单片机解密,就是指单片机攻击者凭藉专用设备或自製设备,利用单片机晶片设计上的漏洞或软体缺陷,通过多种专业技术手段,直接提取加密单片机中烧写档案的关键信息,并可以自己複製烧写晶片或反彙编后自己参考研究。这种反向获取单片机片内程式的方式就叫晶片反向工程。
国内有人认为晶片反向工程其实就是抄袭。相比之下,在国外反向工程是伴随着积体电路工业发展起来的,1984年“半导体晶片保护法案(Semiconductor ChipProtection Act of 1984)”诞生,该法案明确了反向工程的合法性并且严格地区分了侵权和反向工程。中国也于2001年颁布实施了《积体电路布图保护条例》。在晶片反向工程这个问题上为什幺在认识上有如此大的差别呢?
晶片反向工程其实就是晶片分析,晶片分析涉及三大关键技术∶样品预处理技术;晶片分析软体技术和晶片分析技术(也就是电路分析能力)。以上三项技术相辅相成,缺一不可,其中一项薄弱都会影响到企业分析晶片的能力和水準。
晶片反向工程分析流程∶
(1)拍照∶晶片逐层去封装,拍照并对準拼接获得各层晶片照片。
(2)建库∶通过晶片照片提取其中的单元器件建立单元库。
(3)标注∶通过单元库在晶片照片上标记单元器件及器件之间的连线关係。
(4)整理∶把标注出的单元器件整理成为结构清晰的电路图。
(5)层次化∶通过从下至上分析系统的逻辑及机制,从而建立从系统图表到传输级电路的层次化电路图和功能模组。
由上面的分析流程可以看出晶片分析其实就是一个对晶片的解剖过程,在这过程中可以获得晶片的很多相关资料,这些资料可以用来分析学习先进的技术,但是也可以用来複製IC。
PCB
PCB反向工程,又称PCB抄板,即在已经有电子产品实物和电路板实物的前提下,利用反向研发技术手段对电路板进行逆向解析,将原有产品的PCB档案、物料清单(BOM)档案、原理图档案等技术档案以及PCB丝印生产档案进行1:1的还原,然后再利用这些技术档案和生产档案进行PCB制板、元器件焊接、飞针测试、电路板调试,完成原电路板样板的完整複製。
对于PCB反向工程,很多人存在概念误解,甚至认为是山寨,事实上,随着抄板行业的不断发展和深化,今天的PCB抄板概念已经得到更广範围的延伸,不再局限于简单的电路板的複製和克隆,还会涉及产品的二次开发与新产品的研发。比如,通过对既有产品技术档案的分析、设计思路、结构特徵、工艺技术等的理解和探讨,可以为新产品的研发设计提供可行性分析和竞争性参考,协助研发设计单位及时跟进最新技术发展趋势、及时调整改进产品设计方案,研发最具有市场竞争性的新产品。同时,PCB抄板的过程通过对技术资料档案的提取和部分修改,可以实现各类型电子产品的快速更新升级与二次开发,根据抄板提取的档案图与原理图,专业设计人员还能根据客户的意愿对PCB进行最佳化设计与改板,也能够在此基础上为产品增加新的功能或者进行功能特徵的重新设计,这样具备新功能的产品将以最快的速度和全新的姿态亮相,不仅拥有了自己的智慧财产权,也在市场中赢得了先机,为客户带来的是双重的效益。
PCB反向工程的技术实现过程简单来说,就是先将要抄板的电路板进行扫描,记录详细的元器件位置,然后将元器件拆下来做成物料清单(BOM)并安排物料採购,空板则扫描成图片经抄板软体处理还原成pcb板图档案,然后再将PCB档案送製版厂制板,板子製成后将採购到的元器件焊接到製成的PCB板上,然后经过电路板测试和调试即可。
智慧卡
分析智慧卡的反向工程具有侵入性和破坏性,智慧卡被层层刮掉用电子显微镜拍照。这种技术可以完整地揭示出智慧卡的硬体和软体部份。主要的问题就是,把所有的东西按正确的顺序放好以找出每一个部件是如何工作的。工程师们用打乱记忆体位置的方法隐藏密码和操作,例如busscrambling。有时甚至可以在智慧卡运行的时候用探针直接测量电压,设计师则用感应器来检测和防止。破坏支付业务中使用的智慧卡很困难,只有大晶片製造商使用那些专业的设备。况且,和其他安全机制例如阴影帐户相比,这种方法回报太低。
与软体
由于“反向工程”一词用在软体工程(简称“软工”)领域中的具体含义模糊不清,Chikofsky和Cross为此写了篇文章,以阐清及区分“反向工程”与各种相近的概念。据文章所述,反向工程是一种分析目标系统的过程,其目的是识别出系统的各个组件以及它们之间的关係,并以其它的形式或在较高的抽象层次上,重建系统的表征(Representations)。软体反向工程也可被视作“开发周期的逆行”。 在此定义下,对一项软体程式进行反向工程,类似于逆行传统瀑布模型中的开发步骤,即把实现阶段的输出(即软体程式)还原回在设计阶段所做的构思。软体反向工程仅仅是一种检测或分析的过程,它并不会更改目标系统(否则就成了软体再工程)。
软体防篡改技术被用于遏制对专有软体进行反向工程及再工程。实际套用中出现了两类反向工程。第一种,软体的原始码可用,但是更高层次的部分几乎没有描述文档或者描述文档不再适用或者丢失。第二种,软体没有可用的原始码,任何能找到它的原始码的努力都被称为反向工程。大部分人都熟悉这个词的第二种用法。软体的反向工程可以使用净室技术(Clean Room Design)来避免侵犯着作权。
软工中的黑盒测试与反向工程有很多共同点,但黑箱测试人员常供以API以作测试,并且测试的目的就是通过外部攻击,找出程式漏洞和未归档的特性。
反向工程的其他目的包括:安全审查、 解除複製保护(又称破解)、绕过消费类电子产品中常设有的访问限制、定製嵌入式系统(例如引擎管理系统)、产品内部修补或更新、给功能不全的廉价硬体(例如某些显示卡晶片组)添加额外功能,或仅为满足好奇心。
二进制
对最终程式的二进制代码所进行的反向工程被称为“代码反向工程”,或简称RCE(ReverseCodeEngineering)。例如,我们可以用Jad对Java平台的二进制码进行反编译。一个着名的反向工程案例是,首个由非IBM公司所实现的IBM个人电脑(PC)中的BIOS,这开创了IBM PC兼容机产业,使得IBM PC兼容机成为多年来的主流计算机硬体平台。一个以软体反向工程为乐的团体例子是CORE(ChallengeOfReverseEngineering,意为“挑战反向工程”)。在美国,软体反向工程只要遵守着作权法的合理使用规定,都是受保护的。成功的软体反向工程项目有:
1.Samba:一个允许非Windows系统与Windows系统已分享档案的开源项目。由于微软没有公开Windows档案共享机制的信息,Samba必须作反向工程,以便在非Windows系统上,仿真出同样的行为。
2.Wine:对Windows API做了同样的工作,
3.OpenOffice:对Microsoft Office档案格式作反向工程。
4.ReactOS:竭力在ABI及API上,兼容NT系Windows系统,以便让为Windows所编写的软体和驱动程式可以在其上运行。
5.WindowsSCOPE:用来监测及分析Windows系统记忆体的实况内容。
二进制软体技术
软体反向工程有多种实现方法,主要有三:
1.分析通过信息交换所得的观察。最常用于协定反向工程,涉及使用汇流排分析器和数据包嗅探器。在接入计算机汇流排或网路的连线,并成功截取通信数据后,可以对汇流排或网路行为进行分析,以製造出拥有相同行为的通信实现。此法特别适用于设备驱动程式的反向工程。有时,由硬体製造商特意所做的工具,如JTAG连线埠或各种调试工具,也有助于嵌入式系统的反向工程。对于微软的Windows系统,受欢迎的底层调试器有SoftICE。
2.反彙编,即藉用反彙编器,把程式的原始机器码,翻译成较便于阅读理解的彙编代码。这适用于任何的电脑程式,对不熟悉机器码的人特别有用。流行的相关工具有Interactive Disassembler。
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-71 TOW飞弹:1975年三月,伊朗与休斯飞弹系统公司的关于TOW和Maverick飞弹合作的谈判因价格体系的分歧停止了,接下来的1979年革命结束了这种合作的所有计画。伊朗成功地对这种飞弹进行反向工程,目前正在生产他们自己的複製品:图芬(Toophan)。
相关法律
在美国及其他许多国家,製品或製法都受商业秘密保护,只要合理地取得製品或製法就可以对其进行反向工程。专利需要把你的发明公开发表,因此专利不需要反向工程就可进行研究。反向工程的一种动力就是确认竞争者的产品是否侵权专利或侵犯着作权。
为了互用性(例如,支持未公开的档案格式或硬体外围),而对软体或硬体系统进行的反向工程被认为是合法的,虽然专利持有者经常反对并试图打压以任何目的对他们产品进行的反向工程。
为了获取一个有着作权的电脑程式中隐含的思想和功能元素且有合法的理由要获取,当只有拆解这一种方法时,根据法律判定,拆解是对有着作权作品的公平使用。
中国最高人民法院2007年1月17日公布“关于审理不正当竞争民事案件套用法律若干问题的解释”,首次明确规定:通过自行开发研製或者反向工程等方式获得的商业秘密,不认定为反不正当竞争法有关条款规定的侵犯商业秘密行为。 即通过自行研发或反向工程获得商业秘密不属非正当竞争行为,正式为反向工程正名。