In Computer Science, reverse engineering and obfuscation are two important parts of cybersecurity. For example, they are at the core of any malware analysis or the development of digital right management softwares. They can be defined as follows: Reverse engineering is the process by which a computer program is deconstructed to reveal its designs, architecture, or to extract secrets (eg. cryptographic key). Obfuscation is the process to write a computer program whom makes its analysis by reverse engineering difficult. In this course, you will be introduced to these two practices with an hands-on approach.