I started reading "Hacking, The Art of Exploitation" and I am confused about some things regarding memory examination.
When I disassemble main, I get an output of all memories where the individual assembly instructions are, right? Each instruction does not necessarily need to append the memory address by one, that is why I might have
<main+1> and then
<main +3> right after. In the following picture the first 20 instructions for the program are shown. How many bytes of information does each information contain?
Now I get confused, when using
i r eip, I get the location of this register, which is
0x8048384 (so is it stored as the first instruction of main?) . The value next to it, is the value it holds, here I wonder, it stores
0x00fc45c7, however this instruction is not in the output above? I thought it should point to the memory which consists the next instruction for the program.
Now comes the biggest confusion, I can observe the memory where
$eip is stored and observe multiple units at once, which can be seen on here: However on this screenshot using
you can see that there are two values stored in the memory and both of 4 bytes in size? Then using
there are suddenly 4 words in
0x8048384 and other 4 words
I just don't seem to understand how the values stored in the memory address differ based on the units I use. I also thought each memory address should contain only a byte of information?