Reverse Engineering



Reverse Engineering describes the process of analyzing an existing apparatus to figure out how it works and how it was made. The same can be done for a computer program, but instead of looking at screws and cogwheels, we are looking at the machine instructions. These are effectively the 0's and 1's that tell the computer what to do. This is obviously much harder to understand than the code that was used to generate the program.

A skilled reverse engineer can still use the machine code to gain knowledge about the software. This can be used to detect security flaws, which can then either be reported to the programmers for them to eliminate or it can be exploited maliciously. Additionally, Reverse Engineering is used to change old programs to make them compatible with new hardware or to decipher old file formats.