To deobfuscate is to convert a program that is difficult to understand into one that is simple, understandable and straightforward. There are tools available to deobfuscate a tough code or program into a simple and understandable form. Obfuscation is usually done to secure software from attackers, making it hard for those with malicious intentions to understand its inner functionality. Similarly, obfuscation may also be used to conceal malicious content in software. A deobfuscating tool is used to reverse-engineer such programs.
Many techniques have been evaluated to reverse-engineer obfuscated code. The three main techniques for deobfuscating code are:
Cloning is one method used to deobfuscate code. The code is obfuscated through false execution paths, which are introduced into the code to prevent static analysis. These execution paths do not interfere with run time, but they do generate false information during program analysis. They also reduce the quality of information, and make it difficult to analyze the code and the code logic. This problem is addressed by cloning a segment of the code so the false execution paths no longer interfere with the original execution path, which also corrupts the information produced from the analysis.