我明天要参加考试,
在我们运行一个带有 sttraces 的可执行文件后, 标准 Clib 的结果如下 :
- open("/lib/libc.so.6", "O_RDONLY") = 3
- mmap(NULL, 36803630, PROT_READ | PROT_EXEC, MAP_PRIVATE | MAP_DENYWRITE, 3, 0) = 0x7f312ab35000
- mmap(0x7f312aeae000, 20480, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x179000) = 0x7f312aeae000
问题在于,为什么第一次对mmap使用PROT-READPROT_EXEC和第二次对PROT_READPROT_WREITE进行轮查。
请详细解释每次闪电后会发生什么。 我不明白为什么一个过程需要修改 libc ( writer access) 。