Reverse engineering, as we already know, is the process of taking an executable program and obtaining its source or machine-level code to see how the tool was built and to potentially exploit vulnerabilities. The vulnerabilities in the context of reverse engineering are typically software bugs that the programmers deal with when they are found by development and security researchers. In this chapter, we will look at how we can perform reverse engineering with Linux applications. We will cover the following topics in this chapter:
- Fuzzing Linux applications
- Linux and assembly
- Linux and stack buffer overflow
- Linux and heap buffer overflow
- Formatting string bugs in Linux