Reverse engineering

Reverse engineering, also called back engineering, is the processes of extracting knowledge or design information from a product and reproducing it or reproducing anything based on the extracted information. [1]:3 The process often involves disassembling something (a mechanical device, electronic component, computer program, or biological, chemical, or organic matter) and analyzing its components and workings in detail.

The reasons and goals for obtaining such information vary widely from everyday or socially beneficial actions, to criminal actions, depending upon the situation. Often no intellectual property rights are breached, such as when a person or business cannot recollect how something was done, or what something does, and needs to reverse engineer it to work it out for themselves. Reverse engineering is also beneficial in crime prevention, where suspected malware is reverse engineered to understand what it does, and how to detect and remove it, and to allow computers and devices to work together ("interoperate") and to allow saved files on obsolete systems to be used in newer systems. By contrast, reverse engineering can also be used to "crack" software and media to remove their copy protection, [1]:5 or to create a (possibly improved) copy or even a knockoff; this is usually the goal of a competitor. [1]:4

Reverse engineering has its origins in the analysis of hardware for commercial or military advantage. [2]: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. [2]:15 In some cases, the goal of the reverse engineering process can simply be a redocumentation of legacy systems. [2]:15 [3] Even when the product reverse engineered is that of a competitor, the goal may not be to copy them, but to perform competitor analysis. [4] 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. [5]


Reasons for reverse engineering:

  • 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.
  • Improve documentation shortcomings. Reverse engineering can be done when documentation of a system for its design, production, operation or maintenance have shortcomings and original designers are not available to improve it. Reverse engineering of software can provide the most current documentation necessary for understanding the most current state of a software system.
  • 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.
  • Software modernization - often knowledge is lost over time, which can prevent updates and improvements. Reverse engineering is generally needed in order to understand the 'as is' state of existing or legacy software in order to properly estimate the effort required to migrate system knowledge into a 'to be' state. Much of this may be driven by changing functional, compliance or security requirements.
  • 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. [6] Another intent may be to remove copy protection, or circumvention of access restrictions.
  • Bug fixing. To fix (or sometimes to enhance) legacy software which is no longer supported by its creators (e.g. abandonware).
  • Creation of unlicensed/unapproved duplicates. Such duplicates are sometimes called clones in the computing domain.
  • Academic/learning purposes. Reverse engineering for learning purposes may be to understand the key issues of an unsuccessful design and subsequently improve the design.
  • 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
українська: Зворотна розробка
中文: 逆向工程