This chapter focuses on two main topics: executables and libraries ; here we want to find out how they are made, and how they work and interact with each other. To this end we must take a look deep inside their internal code, so it’s necessary to operate at a lower level than in previous chapters. The working environment will be Debian GNU/Linux 8 (codename jessie) for x86_64 processors, equipped with gcc v. 4.9 and gdb 7.7 from GNU.
In the following pages we’ll look at (and change) the assembly code of some test programs; here a good knowledge of assembly language is useful, although not compulsory ...