How Does Reverse Engineering Work?Ken Thayer | December 08, 2017
China's new Shenyang J-11 fighter jet bears a striking resemblance to the Russian Sukhoi Su-27 “Flanker” multirole fighter. Initially, China’s jet was an authorized copy of the Russian fighter; however, China wanted to produce it with local manufacturing technology. Chinese engineers used a method called reverse engineering in order to achieve this task, and now the Shenyang J-11 is headed for the skies of southern China.
What is reverse engineering, and how does it work? How were the Chinese able to copy the Russian fighter jet?
Reverse engineering is a process that examines an existing product to determine detailed information and specifications in order to learn how it was made and how it works. For mechanical assemblies, this typically involves disassembly and then analyzing, measuring and documenting the parts. Reverse engineering is not limited to mechanical components or assemblies. Electronic components and computer programs (software), as well as biological, chemical and organic matter can be reverse engineered as well.
While copying the component may be the ultimate reason for reverse engineering something, as in the Shenyang J-11, it is not a part of the process definition. Reverse engineering describes the method but does not indicate the end use of the knowledge gained. There are many beneficial reasons to reverse engineer a product besides copying it, including:
- Legacy products – products that are no longer manufactured and do not have drawings to reproduce them
- Obsolete products – Original Equipment Manufacturer (OEM) products that are no longer supported or manufactured by the OEM
- Design analysis and development – analyzing a product to make design improvements
- Competitive analysis research or investigation of competitor’s products for possible patent infringement
- Servicing or repair of products when documentation is unavailable
- Crime prevention (e.g. reverse engineering of malware)
- Failure analysis
Of course, reverse engineering can also be used for illegal or unethical motives as well, such as:
- Copying a patented or copyrighted product without permission (e.g. the Russian Sukhoi Su-27)
- Breaking the code or removing copy protection of software (e.g. “unlocking” a smartphone to work on any service carrier; “jailbreaking” a smartphone is legal)
Another reason to reverse engineer a product is to create interoperable products. While some uses for reverse engineering can be illegal, courts have ruled that reverse engineering for interoperability can be considered fair use. For example, a software company may use reverse engineering to make its software run on a different operating system.
While the definition and steps of reverse engineering are the same for various product types, the processes used to achieve it vary.
Beginning with a finished product, engineers analyze the product to determine the design and manufacturing process. The first step is typically obtaining the physical attributes by measuring to obtain dimensional information. This may involve the use of 3D scanners, coordinate measurement machines, and other metrology instruments. Three-dimensional scanners allow for data measurement of highly complex geometries, which can be captured and interpreted by the equipment’s native software or special reverse engineering software.
Once the dimensional data has been captured the information can be transferred to a computer-aided design (CAD) and computer-aided manufacturing (CAM) system for further design development or manufacturing.
Electronic component reverse engineering can involve complete electronic systems or sub-components such as printed circuit boards (PCB). Due to part obsolescence of older equipment, reverse engineering for electronic components and systems is a fairly common and necessary practice.
Printed circuit board reverse engineering is commonly used when servicing or replacing boards that are no longer manufactured or that use obsolete components. Steps typically involve:
- Identification of components on the PCB
- Photographing or drawing the board
- Removing components from the board
- Measuring values for components such as resistors and capacitors
- Creating a bill of materials and order components
- Creating a trace pattern, typically by scanning the board to recreate the trace pattern
- Creating a new bare board
- Assembling components to a board
- Testing a new board
- Writing documentation for future use
Reverse engineering of software is the process of recreating a program’s binary code to trace it back to the original source code. Converting a program from a high-level programming language, such as C or C+ to a low-level language without changing the original program is reverse engineering. It is the software equivalent of disassembling a mechanical assembly.
Reverse engineering can be done where the source code is available, but the high-level details are unknown, or when the source code is not available.
Reverse engineering of software can be done using a static analysis or dynamic analysis method. Using static analysis, the software is evaluated without running the program. Dynamic analysis involves running the program in a controlled environment and then evaluating how it reacts to different inputs.
Several tools are available for reverse engineering software, including:
- Disassemblers – convert binary code into assembly code and convert machine language into user-friendly format
- Debuggers – used to test and find errors in programs
- Hex Editors – allow manipulation of binary data
- Portable Executable (PE) and Resource Viewer – allows the browsing of the structure of windows portable executable files
Biological, Chemical and Organic Matter
Reverse engineering biological, chemical or organic matter involves de-formulating a compound to analyze and understand its functional and regulatory mechanisms. Reverse engineering in biology and chemistry involves mathematical modeling and experimentation.
Many types of scientific and laboratory equipment may be used, including:
- Mass -- identify the amount and type of chemicals present in a sample
- Raman -- measure the wavelength and intensity of inelastically scattered light from molecules
- Infrared (IR) -- measure the wavelength and intensity of the absorption of infrared light by a sample
- Nuclear Magnetic Resonance (NMR) -- determine physical and chemical properties of atoms or the molecules in which they are contained
- Chromatographs -- separate organic chemical mixtures according to physical properties
- Microscopes (optical and biological) – view and study chemicals and organisms
- Calorimeters and Thermal Analyzers – measure heat capacity or temperature heat of a chemical reaction or physical change
- Mechanical Testing Equipment – perform mechanical testing such as tensile, compressive, flexural, shear, adhesion, and ductility
- Elemental Analyzer - analyze the chemical content of organic and inorganic materials
Whether you are reverse engineering a biological system, a software program or a Russian fighter jet, the objective is the same – to analyze and learn detailed information about something that already exists. The processes and tools required to perform this analysis vary greatly, depending on the type of object being studied.