A process of changing a program code into a form difficult for human understanding, while the program’s functions remain the same. The purposes of obfuscation include preserving confidentiality of the program development as well as defending from cybercriminals who attack their victims using code vulnerabilities. A program that changes a code is called obfuscator.