In programming, reverse engineering means taking apart a piece of software to understand how it works.

The term is used generally to refer to extracting design information from anything man-made.

Reverse engineers take a software programme’s binary code and recreating it to trace it back to the original source code, taking it from a high level language to a low level language.