为什么将堆栈空间设置为无限制后重新映射 vdso?

逆向工程 记忆
2021-06-20 05:50:16

在我的 64 位 Ubuntu 16.04 上,默认堆栈大小为 8192 字节。如果我将它设置为无限制,似乎它vdso被重新映射到一个完全不同的内存区域。

$ ulimit -s
8192

$ cat /proc/`pgrep ascii`/maps
08048000-080ed000 r-xp 00000000 08:03 7736874                            /home/sherlock/ascii                                                                           
080ed000-080ef000 rw-p 000a5000 08:03 7736874                            /home/sherlock/ascii                                                                           
080ef000-080f1000 rw-p 00000000 00:00 0
09803000-09825000 rw-p 00000000 00:00 0                                  [heap]
80000000-80001000 rwxp 00000000 00:00 0
f7f74000-f7f76000 rw-p 00000000 00:00 0
f7f76000-f7f79000 r--p 00000000 00:00 0                                  [vvar]
f7f79000-f7f7b000 r-xp 00000000 00:00 0                                  [vdso]
ff86f000-ff891000 rw-p 00000000 00:00 0                                  [stack]

$ ulimit -s unlimited

$ ulimit -s                                                                                                                                          
unlimited

$ cat /proc/`pgrep ascii`/maps
08048000-080ed000 r-xp 00000000 08:03 7736874                            /home/sherlock/ascii                                                                           
080ed000-080ef000 rw-p 000a5000 08:03 7736874                            /home/sherlock/ascii                                                                           
080ef000-080f1000 rw-p 00000000 00:00 0
0988a000-098ac000 rw-p 00000000 00:00 0                                  [heap]
2aa35000-2aa37000 rw-p 00000000 00:00 0
2aa37000-2aa3a000 r--p 00000000 00:00 0                                  [vvar]
2aa3a000-2aa3c000 r-xp 00000000 00:00 0                                  [vdso]
80000000-80001000 rwxp 00000000 00:00 0
ffed3000-ffef5000 rw-p 00000000 00:00 0                                  [stack]

谁能解释这种行为?

0个回答
没有发现任何回复~