In this article we went through a lot of different techniques that can be used to obfuscate a binary so that an attacker cannot easily reverse engineer the binary to find out what it does. Some of the techniques included were encrypting the binary with a key and decrypting it on the runtime and using partial differential in order to confuse the reverse engineering tools like ida pro so that it will seem corrupt when opened inside ida pro but meanwhile it will run correctly when we run it.