As we move our understanding of ELF from 32-bit to 64-bit, there really aren't that many differences except the fact we're dealing with 64-bit and ELF has been adjusted accordingly. The fields are the same, though some of their positions may have been adjusted in order to maintain the integrity of the structures detailing their format and expected values.
So, instead of rehashing what we just learned, let's expand our knowledge a bit and work on understanding what a program written in C looks like, as opposed to one written in assembly, which we dissected in the previous recipe. I want to warn you, though—there are a lot more steps that go into making a binary from a C program, and it's easy to see why.
C, unlike assembly, is a high-level programming language. As such, to get from the raw C code to a working executable...