Reverse engineering
|
Reverse engineering (RE) is the process of taking something (a device, an electrical component, a software program, etc.) apart and analyzing its workings in detail, usually with the intention to construct a new device or program that does the same thing without actually copying anything from the original. The verb form is to reverse-engineer, spelled with a hyphen.
Reverse engineering is commonly done to avoid copyrights on desired functionality, and may be used for avoiding patent law, though this is a bit risky: patents apply to the functionality, not a specific implementation of it.
Reverse engineering is a often used by military, in order to copy other nations' technology, parts of which have been obtained by intelligence operations. It was often used during the Second World War and the Cold War.
Reverse engineering software or hardware systems for the purposes of interoperability, for example in order to support undocumented file formats or hardware peripherals, is mostly believed to be legal, though patent owners often aggressively pursue their patents.
Other purposes of reverse engineering include security auditing, removal of copy protection ("cracking"), circumvention of access restrictions often present in consumer electronics and customization of embedded systems, for example engine management systems.
Contents |
Reverse engineering of mechanical components
Mechanical components of mechanical systems, such as motors, or electrical systems, such as plugs, sockets, and edge card connectors can be reproduced by measuring their mechanical characteristics. In RE of mechanical components, the shape of the component under scrutiny must be completely and accurately measured. The forces acting upon it must also be analysed in order to ensure that the new component can withstand the forces that the original withstood.
Coordinate-measuring machines (CMM) can be used to create a 3D model of the original component, which can then be used in computer-aided modelling. New and improved techniques in reverse engineering include laser scanning which uses laser beams to scan across the surface of components of any shape and create a very precise image of the component surface. This scanning creates a series of slices that, when combined, can represent the surface of the object in a computer simulation.
Reverse engineering of software
Reverse engineering can also apply to software. For example, reverse engineering of binaries for the Java platform can be accomplished using ARGOuml.org (http://www.ARGOuml.org). One very famous case of reverse engineering was the first non-IBM implementation of BIOS which launched the historic PC clone industry.
In the United States, the Digital Millennium Copyright Act exempts from the circumvention ban some acts of reverse engineering aimed at interoperability of file formats and protocols (17 USC 1201 (http://www4.law.cornell.edu/uscode/17/1201.html)(f)), but judges in key cases have ignored this law, since it is acceptable to circumvent restrictions for use, but not for access.
The Samba software, which allows systems that are not running Microsoft Windows systems to share files with systems that are, is a classic example of software reverse engineering, since the Samba project had to reverse-engineer unpublished information about how Windows file sharing worked, so that non-Windows computers could emulate this. The WINE project does the same thing for the Windows API, and OpenOffice.org is one party doing this for the Microsoft Office file formats.
Reverse engineering of software can be accomplished by various methods. The two main groups of reverse engineering is analysis through observation of information exchange (most prevalent in protocol reverse engineering), disassembly using a disassembler, or decompilation using a decompiler.
Reverse engineering as business research
Reverse engineering is also used by businesses to assess competitors' products. It is used to analyze, for instance, how a competitor's product works, what it does, who manufactures it, what components it consists of, estimate costs, identify potential patent infringement, etc.
Value engineering is a related activity also used by business. It involves deconstructing and analysing products, but the objective is to find opportunities for cost cutting.
See also
- Clean room design
- Decompilation
- Digital Millennium Copyright Act
- Interactive Disassembler
- Value engineering
- List of production topics
External links
- Reverse engineering code examples (http://www.tikka-d.co.uk/)
- Low-level software code analysis (http://www.conus.info/)
- Contractable electronics reverse engineering firm. (http://www.bomarc.org)
- Reverse Code Engineering Community (http://reverse-engineering.net/)
- Introduction to Reverse Engineering Software (http://www.acm.uiuc.edu/sigmil/RevEng/), preprint of a book by Mike Perry and Nasko Oskov.
- Win32 DisAssembler (http://www.heaventools.com/PE_Explorer_disassembler.htm)
- Information for people interested in reverse engineering (http://revenge.berlios.de/)
- Overview of reverse engineering and program transformation (http://www.program-transformation.org/Transform/ReverseEngineering/)
- CNN: How Soviets copied America's best bomber during WWII (http://archives.cnn.com/2001/US/01/25/smithsonian.cold.war/)
- Reverse engineering of Tu-4 on GlobalSecurity.org (http://www.globalsecurity.org/wmd/world/russia/tu-4.htm)
- AGATHA from APPLE II and other computer r.e. (http://reformed-theology.org/html/books/best_enemy/chapter_05.htm)
- Tu-4 Soviet Copy of the B-29 (http://www.csd.uwo.ca/~pettypi/elevon/baugher_us/b029-29.html)
- Third World Missiles (http://www.abc.net.au/science/k2/moments/s822349.htm)
- Article "Reverse Engineering Shapes (http://www.ercim.org/publication/Ercim_News/enw44/varady.html)" by Tamás Várady
- Article on legal considerations (http://www.jenkins-ip.com/serv/serv_6.htm) by David C. Musker
- Whatis.com definition (http://whatis.techtarget.com/definition/0,,sid9_gci507015,00.html)
- Reengineering Forum (http://reengineer.org/)
- Citations (http://citeseer.ist.psu.edu/cis?q=reverse+engineering) from CiteSeer
ms:Kejuruteraan undur de:Reverse Engineering fi:Takaisinmallinnus fr:Rétro-ingénierie ja:リバースエンジニアリング nl:Reverse engineering pl:Reverse engineering pt:Engenharia reversa sv:Reverse engineering ru:Обратная разработка