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.
The process of reverse engineering of software aims at restoring a higher-level representation (e.g. assembly code) of software in order to analyze its structure and behavior. Today, software is usually distributed in binary form which is, from an attacker’s perspective, substantially harder to understand than source code. However, various techniques can be applied for analyzing binary code.
- Amedeo Cavallo