Tech moves fast! Stay ahead of the curve with Techopedia!
Join nearly 200,000 subscribers who receive actionable tech insights from Techopedia.
Reverse engineering, in computer programming, is a technique used to analyze software in order to identify and understand the parts it is composed of. The usual reasons for reverse engineering a piece of software are to recreate the program, to build something similar to it, to exploit its weaknesses or strengthen its defenses.
Because closed, proprietary software never comes with documentation that reveals the source code used to create it, people use reverse engineering whenever they want to understand the software’s inner workings.
Some hackers use reverse engineering to find weak points of programs which they can exploit.
Other hackers use reverse engineering to locate weak points with the intention of strengthening the defenses there.
Software companies with competing products reverse engineer their competitors’ programs to find out where and how improvements can be made on their own products. Some companies use reverse engineering when they don’t have similar products yet, to create products of their own.
Those who intend to build their own product based on an existing one often prefer reverse engineering over creating from scratch because once the parts and the dependencies are identified, the process of reconstructing tends to be much easier.
In the US, reverse engineering of software is protected by the fair use exception in copyright law.