Reverse engineering
There are three main kinds of reverse engineering analysis:
Static analysis: Analysis of the contents of a binary file. This helps to determine the structure of the executable portions and print out readable portions to get more details about the purpose of the executable.
Dynamic analysis: This type will execute the binary with or without attaching a debugger to discover what the purpose is and how the executable works.
Hybrid analysis: This is a mixture of static and dynamic analysis. Repeating between static analyses, followed by a dynamic debugging, will give better intuition about the program.