Lee Learns

Memory mapping

At /proc/$PID/maps you can see the memory map for a given process!

Example:

root@ubuntu-01:proc# cat /proc/self/maps
55b9c3a77000-55b9c3a79000 r--p 00000000 fe:00 1519                       /usr/bin/cat
55b9c3a79000-55b9c3a7e000 r-xp 00002000 fe:00 1519                       /usr/bin/cat
55b9c3a7e000-55b9c3a80000 r--p 00007000 fe:00 1519                       /usr/bin/cat
55b9c3a80000-55b9c3a81000 r--p 00008000 fe:00 1519                       /usr/bin/cat
55b9c3a81000-55b9c3a82000 rw-p 00009000 fe:00 1519                       /usr/bin/cat
55b9c548f000-55b9c54b0000 rw-p 00000000 00:00 0                          [heap]
7f1d0f68b000-7f1d0f6ad000 rw-p 00000000 00:00 0 
7f1d0f6ad000-7f1d0f706000 r--p 00000000 fe:00 10171                      /usr/lib/locale/C.utf8/LC_CTYPE
7f1d0f706000-7f1d0f707000 r--p 00000000 fe:00 10178                      /usr/lib/locale/C.utf8/LC_NUMERIC
7f1d0f707000-7f1d0f708000 r--p 00000000 fe:00 10181                      /usr/lib/locale/C.utf8/LC_TIME
7f1d0f708000-7f1d0f709000 r--p 00000000 fe:00 10170                      /usr/lib/locale/C.utf8/LC_COLLATE
7f1d0f709000-7f1d0f70a000 r--p 00000000 fe:00 10176                      /usr/lib/locale/C.utf8/LC_MONETARY
7f1d0f70a000-7f1d0f70b000 r--p 00000000 fe:00 10175                      /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES
7f1d0f70b000-7f1d0f70c000 r--p 00000000 fe:00 10179                      /usr/lib/locale/C.utf8/LC_PAPER
7f1d0f70c000-7f1d0f70d000 r--p 00000000 fe:00 10177                      /usr/lib/locale/C.utf8/LC_NAME
7f1d0f70d000-7f1d0f714000 r--s 00000000 fe:00 13083                      /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7f1d0f714000-7f1d0f717000 rw-p 00000000 00:00 0 
7f1d0f717000-7f1d0f73f000 r--p 00000000 fe:00 13225                      /usr/lib/x86_64-linux-gnu/libc.so.6
7f1d0f73f000-7f1d0f8c7000 r-xp 00028000 fe:00 13225                      /usr/lib/x86_64-linux-gnu/libc.so.6
7f1d0f8c7000-7f1d0f916000 r--p 001b0000 fe:00 13225                      /usr/lib/x86_64-linux-gnu/libc.so.6
7f1d0f916000-7f1d0f91a000 r--p 001fe000 fe:00 13225                      /usr/lib/x86_64-linux-gnu/libc.so.6
7f1d0f91a000-7f1d0f91c000 rw-p 00202000 fe:00 13225                      /usr/lib/x86_64-linux-gnu/libc.so.6
7f1d0f91c000-7f1d0f929000 rw-p 00000000 00:00 0 
7f1d0f929000-7f1d0f92a000 r--p 00000000 fe:00 10169                      /usr/lib/locale/C.utf8/LC_ADDRESS
7f1d0f92a000-7f1d0f92b000 r--p 00000000 fe:00 10180                      /usr/lib/locale/C.utf8/LC_TELEPHONE
7f1d0f92b000-7f1d0f92c000 r--p 00000000 fe:00 10173                      /usr/lib/locale/C.utf8/LC_MEASUREMENT
7f1d0f92c000-7f1d0f92d000 r--p 00000000 fe:00 10172                      /usr/lib/locale/C.utf8/LC_IDENTIFICATION
7f1d0f92d000-7f1d0f92f000 rw-p 00000000 00:00 0 
7f1d0f92f000-7f1d0f930000 r--p 00000000 fe:00 13150                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1d0f930000-7f1d0f95b000 r-xp 00001000 fe:00 13150                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1d0f95b000-7f1d0f965000 r--p 0002c000 fe:00 13150                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1d0f965000-7f1d0f967000 r--p 00036000 fe:00 13150                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7f1d0f967000-7f1d0f969000 rw-p 00038000 fe:00 13150                      /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7fff7bcaa000-7fff7bccb000 rw-p 00000000 00:00 0                          [stack]
7fff7bd81000-7fff7bd85000 r--p 00000000 00:00 0                          [vvar]
7fff7bd85000-7fff7bd87000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

#fundamentals