Linux依赖库查找顺序

1.目录说明:

/lib
根目录下的所程序的共享库目录。
此目录下包含系统引导和在根用户执行命令时候所必需用到的共享库。做个不太好但是比较形象的比喻,点类似于Windows上面的system32目录。理说,这里存放的文件应该是/bin目录下程序所需要的库文件的存放地,也不排除一些例外的情况。类似的目录还/usr/lib,/usr/local/lib等等。
/usr/lib
目标库文件,包括动态连接库加上一些通常不是直接调用的可执行文件的存放位置。
这个目录功能类似/lib目录,理说,这里存放的文件应该是/bin目录下程序所需要的库文件的存放地,也不排除一些例外的情况。

/lib与/usr/lib:
/lib和/usr/lib的区别类似/bin,/sbin与/usr/bin,/usr/sbin。
/lib一般存放对于用户和系统来说“必须”的库(二进制文件)。
/usr/lib一般存放的只是对用户和系统来说“不是必需的”库(二进制文件)。

2.gcc编译阶段链接库时搜索库文件的顺序

-L选项明文指定的目录
-Wl,rpath指定的目录。此项同1谁的优先级高还没确定,等有时间再验证下。
环境变量LD_LIBRARY_PATH中设置的目录。
/etc/ld.so.cache文件中缓存的文件位置
默认的/usr/lib或者/usr/lib64。

程序运行时搜索动态库文件的顺序:

-Wl,-rpath编译选项指定的目录。
环境变量LD_LIBRARY_PATH中设置的目录。
/etc/ld.so.cache文件中缓存的文件位置。此文件中的数据是一个缓存,来源于/etc/ld.so.conf文件中的内容,执行ldconfig命令后,/etc/ld.so.conf文件中的所有目录下的动态库就会缓存到ld.so.cache文件中。
默认的/usr/lib或者/usr/lib64目录。
做个备注:-Wl,-rpath指定的库文件位置,在编译和运行时都有效。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
动态链接劫持(Dynamic Link Library Hijacking),也称为DLL劫持,是一种恶意攻击技术,利用系统在加载可执行文件时搜索和加载动态链接的方式进行攻击。攻击者通过在系统中放置恶意的动态链接文件,并将其命名为被目标程序所依赖的动态链接文件名,从而使目标程序在加载动态链接加载到了恶意代码。 当目标程序启动时,系统会按照一定的搜索顺序查找加载所需的动态链接。攻击者利用这个搜索顺序的漏洞,将恶意的动态链接文件放置在搜索路径上,并命名为被目标程序所依赖的动态链接文件名,使得目标程序加载到了恶意代码。 通过DLL劫持攻击,攻击者可以执行恶意代码,获取目标系统的敏感信息,甚至完全控制目标系统。为了防止DLL劫持攻击,开发者需要注意使用绝对路径或者强制使用指定版本的动态链接加载,以避免加载到恶意的动态链接文件。 在Linux系统中,可以采取以下几种方式来防止DLL劫持攻击: 1. 使用绝对路径加载动态链接:在程序中指定动态链接的绝对路径,确保只加载指定路径下的动态链接。 2. 使用rpath或rpath-link选项:在编译链接时,可以使用rpath或rpath-link选项指定动态链接的搜索路径,避免使用默认搜索路径。 3. 使用LD_LIBRARY_PATH环境变量:通过设置LD_LIBRARY_PATH环境变量,指定动态链接的搜索路径,使得程序只加载指定路径下的动态链接。 4. 使用静态链接:将动态链接编译为静态链接,以避免加载动态链接时的搜索过程。 请注意,以上方法只是一些常见的防御措施,但并不能完全防止DLL劫持攻击。开发者在编写代码时应该考虑到安全性,并采取适当的防御措施来减少风险。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离水的鱼儿

一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值