vsyscall是kernel提供一个快速调用的方式,其实是牺牲了一定安全性的。
vsyscall.h
1 |
|
可以看到gettimeofday,time,getcpu这三个系统调用给了固定地址,起始地址是-10UL << 20
,依次是三个函数的地址。
getcpu() was added in kernel 2.6.19 for x86-64 and i386. Library support was added in glibc 2.29.
vdso地址随机化,增强了安全性。
vsyscall是kernel提供一个快速调用的方式,其实是牺牲了一定安全性的。
vsyscall.h
1 | #ifndef _ASM_X86_VSYSCALL_H |
可以看到gettimeofday,time,getcpu这三个系统调用给了固定地址,起始地址是-10UL << 20
,依次是三个函数的地址。
getcpu() was added in kernel 2.6.19 for x86-64 and i386. Library support was added in glibc 2.29.
vdso地址随机化,增强了安全性。