逆向工程
逆向工程 (正體)
逆向工程,通过对某种产品的结构、功能、运作进行分析、分解、研究后,制作出功能相近,但又不完全一样的产品过程。
逆向工程可能会被误认为是对知识产权的严重侵害,但是在实际应用上,反而可能会保护知识产权所有者。例如在集成电路领域,如果怀疑某公司侵犯知识产权,可以用逆向工程技术来寻找证据。
使用逆向工程的原因
需要逆向工程的原因包括以下几种
- 相互运用性.
- 文件丢失: 采取逆向工程的情况往往是在某一个特殊设备的文件已经丢失了(或者根本就没有),同时又找不到工程的负责人。完整的系统时常需要基于的陈旧的系统上进行再设计,这就意味着想要整合原有的功能进行项目的唯一的方法便是采用逆向工程的方法分析已有的碎片进行再设计。
- 产品分析。用于调查产品的运作方式,部件构成,估计预算,识别潜在的侵权行为。
- 安全性评估。
- 去除复制保护和伪装的登录权限。
- 制造没有许可/未审批的副本。
- 学术/研究目的。
逆向工程和机械设备
随着计算机辅助设计的流行,逆向工程变成了一种能根据现有的物理部件通过CAD, CAM, CAE或其他软件构筑3D虚拟模型的方法。[1]. 逆向工程的过程采用了通过丈量实际物体的尺寸并将其制作成3D模型的方法,真实的物件可以通过如CMMs,激光扫描仪, 结构光源转换仪或者X射线断层成像这些3D扫描技术进行尺寸测量。这些测量数据通常被认作是点集,缺乏拓扑信息并且同时通常会被制作成更有用格式例如多边形网格,NURBS曲线或者CAD模型。 由于顶点云本身并不像3D软件里的模型那样直观,所以如同3-matic, Imageware,PolyWorks,Rapidform或者Geomagic这些软件都提供了将顶点云变成能可视图像或者被其他应用软件如3D CAD,CAM,CAE识别的格式的功能。
反向工程同时会被需要将真实的几何体应用在虚拟的数字开发环境中的商业活动中应用,比如将自己产品或者竞争者的三维数据数字化。通过这种手段可以分析出产品的运作方式,部件构成,估计预算和识别潜在的侵权行为等。
价值工程 也是商业中应用的类似手段。不过价值工程的目的是通过反构造和分析产品来找到节省开销的办法。
软件的逆向工程
您可以在
维基教科书中查找此百科条目的相关电子教程:
逆向工程
“逆向工程”这个词用在软件上时,对不同的人有不同的意思,Chikofsky和Cross为那些用法写了一个研究报告并定义了一个分类系统。报告里说:
逆向工程是这样一个过程:对系统进行分析,在高一级的抽象层次描述系统。[2]它也可被看作“开发周期的逆行”。[3]在这个模式里,实现阶段的输出(源代码形式的)被逆向工程回分析阶段,与传统的瀑布模型正相反。逆向工程只不过是一个检测的过程:软件系统不被修改(否则就成了软件重构)。软件防修改技术被用于防止有版权的软件和软件推动的系统被逆向工程或软件重构。实际应用中出现了两类逆向工程。第一种,软件的源代码可用,但是更高层次的部分几乎没有描述文档或者描述文档不再适用或者丢失。第二种,软件没有可用的源代码,任何能找到它的源代码的努力都被称为逆向工程。大部分人都熟悉这个词的第二种用法。软件的逆向工程可以使用净室技术避免侵犯版权。
注意, 软件工程中的黑盒测试与逆向工程有很多相同之处。测试者通常使用API,但是他们的目标是从外部找出漏洞和未归档特性。
逆向工程的其他目的包括:安全审查, 移除版权保护(“破解”),规避消费电子中的访问限制,定制[嵌入式系统]](例如引擎管理系统),内部修补或更新,给功能不全的廉价硬件(例如某些显卡芯片组)增加功能,或者仅仅是为了满足好奇心。
二进制软件
这个过程也被称为“逆向编码工程”或RCE。[4]例如,可以用Jad对Java平台的字节码程序进行反编译。一个著名的逆向工程案例就是第一个非-IBM实现的PCBIOS。这个BIOS促始了历史性的IBM PC兼容工业,IBM PC兼容机多年来一直是具有压倒性优势的计算机硬件平台。一个以逆向工程为兴趣的团体的例子就是CORE,Challenge Of Reverse Engineering的缩写,意思是“逆向工程的挑战”。在美国, 《千禧年数字版权法案》(Digital Millennium Copyright Act(DMCA))对以文件格式或协议的交互性为目的的逆向工程的某些活动不予禁止,但是在一些关键案例中法官忽视了此法令,因为使用时不受限制是可以接受的,访问时不行。[5]在美国软件逆向工程受到版权法中公平使用例外的保护。[6]Samba软件使运行非Microsoft Windows的系统可以与运行Microsoft Windows的系统共享文件。它是一个经典的软件逆向工程,因为有关Windows文件是如何进行共享的信息并没有公开,Samba项目需要对这些未公开信息进行逆向工程,以便非-Windows计算机模拟Windows文件共享。Wine项目对Windows API做了同样的工作,OpenOffice.org是对Microsoft Office文件格式做逆向工程的一部分。ReactOS项目的目标更为远大,它努力提供Windos操作系统NT分支的二进制兼容性(ABI and API),以便让Windows编写的软件和驱动可以运行在干净的逆向工程GPL开源复本空间中。
二进制软件技术
软件的逆向工程可以用多种方法实现,主要的三类软件逆向工程是:
- 通过观察信息交换进行分析。主要流行于对协议做逆向工程,它使用总线分析器和数据包嗅探器,例如,为了访问一个总线连接或一个计算机网络连接并揭示其上的通信数据就可以使用这种方法。通过分析总线或网络的活动,做出一个独立的实现用以模拟那些活动。此法对设备驱动的逆向工程特别有用。在进行嵌入式系统的逆向工程时,厂商特意引进的工具有时能产生极大的促进作用,例如JTAG端口或其他的调试法。在Microsoft Windows中,底层的调试器很受欢迎,例如SoftICE。
- 使用反汇编器进行反汇编。仅借助机器码助记符读取和理解已经被编译成原始机器码的程序。此法对任何计算机程序都有效,但是相当耗时,特别是对于不熟悉机器码的人。Interactive Disassembler是一个很受欢迎的反汇编工具。
- 使用反编译器进行反编译。对只有机器码或字节码形式的程序,重建高级语言形式的源代码。这种方法得到的源代码结果不是唯一的。
源代码
许多UML工具涉及到导入源代码生成UML图,即“逆向工程”。见UML工具列表。
集成电路和智能卡的逆向工程
分析智能卡的逆向工程具有侵入性和破坏性,智能卡被层层刮掉用电子显微镜拍照。这种技术可以完整地揭示出智能卡的硬件和软件部份。主要的问题就是,把所有的东西按正确的顺序放好以找出每一个部件是如何工作的。工程师们用打乱内存位置的方法隐藏密码和操作,例如busscrambling[7][8]。有时甚至可以在智能卡运行的时候用探针直接测量电压,设计师则用感应器来检测和防止。[9]破坏支付业务中使用的智能卡很困难,只有大芯片制造商使用那些专业的设备。况且,和其他安全机制例如阴影帐户相比,这种方法回报太低。
逆向工程在军事上的应用
逆向工程经常被用在军事上,用来复制从战场上由常规部队活情报活动获得的别国的技术、设备、信息或其零件。二战和冷战中经常被用到。二战以来的著名例子有:
- 便携油桶:英美军注意到德军有一种设计绝妙的油桶,于是就用逆向工程复制了这些桶。这些被泛称为“便携油桶”。
- 图波列夫 Tu-4: 三架飞往日本的B-29轰炸机迫降到了苏联。苏联没有类似的战略轰炸机,就决定复制B-29。几年后他们开发出了Tu-4,几近完美的复制品。
- V2导弹:战争结束时V2的技术文档和相关技术被西联盟俘获。苏联和被俘的德工程师要用俘获的构件重建技术文档和图纸,用于生产这种导弹的代件。R-1启动了战后苏联导弹计划,一直到R-7,并导致了太空竞赛。
- K-13/R-3S导弹(NATO报告名称为AA-2 'Atoll)是苏联对AIM-9响尾蛇的逆向工程复制品。一枚台湾AIM-9B射中中国MiG-17后没有爆炸,不可思议的是这枚导弹留在了机身里,飞行员带着这枚导弹返回了基地。
- BGM-71_TOW导弹:1975年三月,伊朗与休斯导弹系统公司的关于TOW和Maverick导弹合作的谈判因价格体系的分歧停止了,接下来的1979年革命结束了这种合作的所有计划。伊朗成功地对这种导弹进行逆向工程,目前正在生产他们自己的复制品:Toophan。
相关法律
在美国及其他许多国家,制品或制法都受商业秘密保护,只要合理地取得制品或制法就可以对其进行逆向工程。专利需要把你的发明公开发表,因此专利不需要逆向工程就可进行研究。逆向工程的一种动力就是确认竞争者的产品是否侵权专利或侵犯版权。
为了互用性(例如,支持未公开的文件格式或硬件外围),而对软件或硬件系统进行的逆向工程被认为是合法的,虽然专利持有者经常反对并试图打压以任何目的对他们产品进行的逆向工程。
"...为了获取一个有版权的计算机程序中隐含的思想和功能元素且有合法的理由要获取,当只有拆解这一种方法时,根据法律判定,拆解是对有版权作品的公平使用。[10]
另见
- 安提基特拉机制
- 基准化分析法
- 总线分析器
- 净室设计
- 代码融合
- 索尼PS游戏机模拟器
- 反编译
- 千禧年数字版权法案 (DMCA)
- 法工程学
- 交互式反汇编器
- J. Brant Arseneau
- 知识挖掘元模型
- List of production topics
- 逻辑分析器
- 《记忆裂痕》(电影)又名《空头支票》
- 价值工程
进一步
- Eilam, Eldad(2005).Reversing: Secrets of Reverse Engineering.Wiley Publishing,595.ISBN 0764574817.
- Raja Vinesh, Fernandes Kiran J.(2008).Reverse Engineering - An Industrial Perspective.Springer,242.ISBN 978-1-84628-855-5.
参考
- ^ T. Varady, R. R. Martin, J. Cox, Reverse Engineering of Geometric Models—An Introduction, Computer Aided Design 29 (4), 255-268, 1997.
- ^ Chikofsky, E.J.; J.H. Cross II(1990年January月).“Reverse Engineering and Design Recovery: A Taxonomy in IEEE Software”.IEEE Computer Society:13–17.
- ^ Warden, R.(1992).Software Reuse and Reverse Engineering in Practice.London, England:Chapman & Hall,283–305.
- ^ Chuvakin, Anton,Cyrus Peikari(2004年January月).Security Warrior,1st ed.,O'Reilly.于2006-05-25参阅.
- ^ US Code: Title 17,1201. Circumvention of copyright protection systems.于2006年5月25日查阅.
- ^ See Pamela Samuelson and Suzanne Scotchmer, "The Law and Economics of Reverse Engineering", 111 Yale Law Journal 1575-1663 (May 2002).
- ^ Wolfgang Rankl, Wolfgang Effing, Smart Card Handbook (2004)
- ^ T. Welz: Smart cards as methods for payment (2008), Seminar ITS-Security Ruhr-Universität Bochum, "http://www.crypto.rub.de/its_seminar_ws0708.html"
- ^ David C. Musker: Protecting & Exploiting Intellectual Property in Electronics, IBC Conferences, 10 June 1998
- ^ Sega v. Accolade, 203 F.3d 596 (9th Cir. 1993)
外部链接
- Crackmes.de, the longest running and most complete Crackmes web page on the internet. Free Reverse Code Engineering training material
- Video RCE, the biggest Reverse Code Engineering Video Library, with hundreds of free video tutorials
- IITAC, the Reverse Code Engineering and IT Security Training/Audit Institute a leading consulting institute, home of the above free RCE resources
- Reverse Code Engineering: The complete resource for RE of software. Archives of the most important Reverse Code Engineering sites
- OpenRCE: Reverse Engineering Portal
- MoDisco: (Model Discovery), an Eclipse Project on Model Driven Reverse Engineering
- ERESI: The ERESI Reverse Engineering Software Interface for RCE on UNIX
- Radare: Advanced CmdLine Hexadecimal Editor, Disassembler and Debugger multi-platform full-featured RCE tool
- Program transformation wiki on Reverse Engineering
- Introduction to Reverse Engineering Software, preprint of a book by Mike Perry and Nasko Oskov.
- Reverse Engineering Shapes, article by Tamás Várady
- Online Resource for Reverse Engineering Software
- Article on legal considerations by David C. Musker
- CNN: How Soviets copied America's best bomber during WWII
- Very good RE definitions from Software Engineering
- Architecture-Driven Modernization group at OMG
- Reverse Engineering Delivers Product Knowledge Aids Technology Spread - Article in Electronic Design by Dick James, Senior Technology Adviser, Chipworks
- Chikofsky, E.J.; J.H. Cross II (January 1990). "Reverse Engineering and Design Recovery: A Taxonomy in IEEE Software". IEEE Computer Society: 13–17. - Original Paper hosted at cs.cmu.edu
- Reverse Engineering Applications Creaform 3D Reverse Engineering Services
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History