Reverse engineering, also known as retro-engineering, is the practice of thoroughly examining an object, tool, device or system to understand its inner workings and design logic. This process involves analyzing its structure, function and operation through abductive reasoning, i.e., formulating hypotheses about how it works and then verifying them. The ultimate goal is to create a device that performs the same or a similar task, without copying the details of the original.
The objective of reverse engineering is to obtain as much technical information as possible about a product, of which you have no prior knowledge of its design, construction and operation. To achieve this, each part of the system must be carefully examined and detailed notes taken. Reverse engineering is often used when the original design is not available or when you want to improve an existing product.
Reverse engineering is a relatively recent branch of engineering, with its origins dating back to World War II. During this conflict, the Allies and Axis powers regularly captured machinery and equipment from the opposing side. Once in their possession, engineers would analyze the equipment in detail to understand the enemy’s technology and find flaws or weaknesses they could exploit.
Reverse engineering has many applications in today’s world and is used by all types of companies in various technological fields. Some of its most common uses include:
- Researching, analyzing and understanding the technology used by other nations or other companies.
- Analyzing competitors’ products to see if they infringe on another company’s patents.
- Developing products that are compatible with other products, without having access to the technical details of the latter.
- Check the security of a product, in computing for example, to know the security gaps that a program may have.
Reverse engineering is currently divided into two broad categories: product reverse engineering and software reverse engineering. Product reverse engineering deals with all physical products, such as machines, electronic components, devices and mechanical systems. On the other hand, software reverse engineering deals with protocols, programming codes, digital applications and computer systems.
The usual engineering tasks involve following the direction from the specific to the general, but reverse engineering indicates that the work should be done following the opposite direction, from the general to the specific, something uncommon for engineers, which involves reversing the way of thinking and is undoubtedly a great exercise in thinking and is a very important skill today.
Reverse engineering is not a solution method, but rather a learning method. It involves analyzing an object to the point of understanding each of its components and their functions. While the amount of knowledge that can be gained is great, only theoretical learning has been achieved. To solve a problem, you must apply what you have learned and start from scratch.
If a well-established reverse engineering process is followed, there should be no legal problems. The goal of reverse engineering is to obtain a product that performs the same or a similar task, but does not apply the same operating principles as the product under analysis. In other words, reverse engineering should only be used to learn about a product in order to create one that does the same thing but in a different way.