Reverse engineering

Reverse engineering, also called back engineering, is the process of where a man-made object is deconstructed to reveal its designs, architecture, or to extract knowledge from the object. This process is similar to scientific research but the only difference is that scientific research is about a natural phenomenon. [1]:3 Reverse engineering is applicable in the fields of mechanical engineering, electronic engineering, software engineering, chemical engineering, [2] and systems biology. [3]


Reverse engineering has its origins in the analysis of hardware for commercial or military advantage. [4]:13 However, the reverse engineering process in itself is not concerned with creating a copy or changing the artifact in some way; it is only an analysis in order to deduce design features from products with little or no additional knowledge about the procedures involved in their original production. [4]:15 In some cases, the goal of the reverse engineering process can simply be a redocumentation of legacy systems. [4]:15 [5] Even when the product reverse engineered is that of a competitor, the goal may not be to copy them, but to perform competitor analysis. [6] Reverse engineering may also be used to create interoperable products; despite some narrowly tailored US and EU legislation, the legality of using specific reverse engineering techniques for this purpose has been hotly contested in courts worldwide for more than two decades. [7]

There are various reasons for performing reverse engineering in various fields. For software, reverse engineering can help to improve the understanding of the underlying source code for the maintenance and the improvement of the software. Relevant information can be extracted to make a decision for software development, graphical representations of the code can help to generate alternate views regarding a source code, and to detect and fix a software bug or software vulnerability. Besides, as a software develops over time, information of the software designs and improvements are often lost with time. With reverse engineering, such pieces of lost information can be recovered. Reverse engineering can help to cut down the time required to understand the source code, thus reducing the overall cost of the software production. [8] Besides, reversing can be useful in finding a malicious code in a software, thus enable the elimination of the code from the software system with better code detectors. Reversing a source code can also be useful in finding uses of the source code, and detecting the replicating of source code where it is not intended to be used. Reversing is also a good way of learning on how other people's products are being built. [1] On the other hand, reverse engineering can also be used to "crack" software and media to remove their copy protection, [1]:7 or to create a (possibly improved) copy or even a knockoff; this is usually the goal of a competitor. [1]:8 Malware developer often uses reverse engineering techniques to find vulnerabilities in an operating system (OS), in order build a computer virus that can exploit the system vulnerabilities. [1]:5 Reverse engineering is also being used in cryptanalysis in order to find vulnerabilities in substitution cipher, symmetric-key algorithm or public-key cryptography. [1]:6

  • Interfacing. Reverse engineering can be used when a system is required to interface to another system and how both systems would negotiate is to be established. Such requirements typically exist for interoperability.
  • Military or commercial espionage. Learning about an enemy's or competitor's latest research by stealing or capturing a prototype and dismantling it. It may result in development of similar product, or better countermeasures for it.
  • Obsolescence. Integrated circuits are often designed on proprietary systems, and built on production lines which become obsolete in only a few years. When systems using these parts can no longer be maintained (since the parts are no longer made), the only way to incorporate the functionality into new technology is to reverse-engineer the existing chip and then redesign it using newer tools, using the understanding gained as a guide. Another obsolescence originated problem which can be solved by reverse engineering is the need to support (maintenance and supply for continuous operation) existing, legacy devices which are no longer supported by their original equipment manufacturer (OEM). This problem is particularly critical in military operations.
  • Product security analysis. To examine how a product works, what are specifications of its components, estimate costs and identify potential patent infringement. Acquiring sensitive data by disassembling and analysing the design of a system component. [9] Another intent may be to remove copy protection, or circumvention of access restrictions.
  • Competitive technical intelligence. Understand what one's competitor is actually doing, versus what they say they are doing.
  • Saving money, when one finds out what a piece of electronics is capable of, it can spare a user from purchase of a separate product.
  • Repurposing, when obsolete objects are reused in a different but useful manner.
Other Languages
Afrikaans: Afkykontwerp
العربية: هندسة عكسية
Bahasa Indonesia: Rekayasa balik
Bahasa Melayu: Kejuruteraan balikan
português: Engenharia reversa
srpskohrvatski / српскохрватски: Obrnuti inženjering
українська: Зворотна розробка
中文: 逆向工程