最近,我学到了一个技巧,如果文件缺少可执行权限,我们可以使用/lib64/ld-linux-x86-64.so.2
.
例如,恢复 x 权限
-rw-r--r-- 1 root root 59K Mar 1 2017 /bin/chmod
Run Code Online (Sandbox Code Playgroud)
我们可以跑
/lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod
Run Code Online (Sandbox Code Playgroud)
我真的不知道它是怎么做到的,这不是一个常规的东西,有点神秘。
我注意到我编译为 gcc 的所有程序都链接到 vdso 库。这是包含对内核的系统调用的库,例如 mmap() 和 fork() 以及其他系统调用吗?
我知道系统调用不是 GNU C 标准库的函数,所以它们的目标代码必须在编译时与应用程序链接的某个库中?
那么 vdso 是那个库吗?
kernel libraries system-calls dynamic-linking shared-library