
The software-based applications have increased dramatically over the last couple of years. The main focus of software developers is the functionality of the developed application keeping security behind. Therefore, security of these software applications became a major issue. A key threat that is facing software security is reverse engineering attack, which is also known as software analysis. Reverse engineers’ main objective is to discover the concealed code. To prevent and detect this kind of threat, we can use code obfuscation. Code obfuscation can not only provide security to the developed software application, but also hide software flaws via techniques such as masking of the fingerprint of the developed software. In this paper, we survey recent research related to code obfuscation and reverse engineering attacks. In addition, we review some techniques that a reused in code obfuscation. Moreover, we present the common tools that are used to enhance software security against reverse engineering by code obfuscation.