Ld.so

维基百科,自由的百科全书
跳转至: 导航搜索

ld.soUnix类Unix系统上的动态链接器,常见的有两个变体:

  • ld.so针对a.out格式的二进制可执行文件
  • ld-linux.so针对ELF格式的二进制可执行文件

加载顺序[编辑]

应用程序需要使用动态链接库里的函数时,由ld.so负责加载。搜索动态链接库的顺序依此是

  • 环境变量LD_AOUT_LIBRARY_PATH(a.out格式)、LD_LIBRARY_PATH(ELF格式);在Linux中,LD_PRELOAD指定的目录具有最高优先权[1]
  • 缓存文件/etc/ld.so.cache。此为上述环境变量指定目录的二进制索引文件。更新缓存的命令是ldconfig
  • 默认目录,先在/lib中寻找,再到/usr/lib中寻找。

安全性[编辑]

骇客可以通过修改上述环境变量,让具有特权的应用程序加载恶意动态链接库,从而导致攻击行为。所以,对于setuid/setgid应用程序,动态链接器只在默认目录中寻找已被setgid动态链接库

参考文献[编辑]

  1. ^ David A. Wheeler. 找出并保护程序的入口. IBM. 2004年2月10日 [2009年3月21日] (中文).