标签: shared-libraries

查找二进制文件链接的库

我知道有一个命令列出了软件所链接的库和各自的版本。

有 ld 或 libtool 的东西吗?

但我就是想不起来。在谷歌上花了一些时间,但没有想出任何有用的东西。

更新
ldd <binary>对 linux 有帮助,(来自@ Ernelli),而我发现它otool -L <binary>在 MacOS X 上做了类似的事情。

linux shared-libraries macos

47
推荐指数
3
解决办法
7万
查看次数

颠覆 Linux 系统上的执行标志。为什么这是可能的?

在阅读本文时,我发现了以下漏洞:

% cp /usr/bin/id ~
% chmod -x ~/id
% ls -al ~/id
-rw-r--r-- 1 edd edd 22020 2012-08-01 15:06 /home/edd/id
% ~/id
zsh: permission denied: /home/edd/id
% /lib/ld-linux.so.2 ~/id
uid=1001(edd) gid=1001(edd) groups=1001(edd),1002(wheel)
Run Code Online (Sandbox Code Playgroud)

这个片段表明我们可以作为普通的非特权用户轻松地回避文件系统的执行权限。我在 Ubuntu 12.04 上运行了这个。

虽然 Linux 加载器根据 file(1) 是一个共享对象,但它也有一个允许直接执行的入口点。当以这种方式执行时,Linux 加载器充当 ELF 二进制文件的解释器。

然而,在我的 OpenBSD 机器上,此漏洞利用并不有效,因为您可能不会将加载程序作为程序执行。OpenBSD 手册页说:“ld.so 本身是一个最初由内核加载的共享对象。”。

在 Solaris 9 上试试这个,你会得到一个段错误。我不确定其他地方会发生什么。

因此,我的问题是:

  • 为什么 Linux 加载程序(直接执行时)在解释 ELF 二进制文件之前检查文件系统属性?
  • 为什么要实现一种设计为不允许执行文件的机制,如果它是如此微不足道的回避?我错过了什么吗?

linux security file-permissions shared-libraries

24
推荐指数
2
解决办法
2882
查看次数

我如何知道已经运行的进程加载了哪些共享库?

我如何知道已经运行的进程加载了哪些共享库?

我正在使用 Linux。

linux process shared-libraries

5
推荐指数
1
解决办法
4367
查看次数

/usr/lib /usr/local/lib 和 /usr/lib/x86_64-linux-gnu 有什么区别?

在我的 Linux 机器上,我libboost*.so在上述所有目录中都有 boost 库(文件)。我想知道它们之间有什么区别。我可以删除重复的 so 文件吗?

linux shared-libraries

3
推荐指数
1
解决办法
7714
查看次数

在 RHEL5.7 中更改 ld-linux-x86-64.so.2 的版本

我正在尝试使用与 /lib64 中的 ld-linux-x86-64.so.2 不兼容的共享库。我没有 root 访问权限,因此无法更改 /lib64 中的文件。有没有办法告诉我的 RHEL5.7 盒子使用不同的 ld-linux-x86-64.so.2?我已经尝试将路径放在我需要在 $LD_LIBRARY_PATH 中使用的版本,但它在那里被忽略了。

我有一个与一些共享库打包在一起的可执行文件。可执行文件主要与机器上已经找到的库一起使用,但每隔一段时间就会崩溃并指向我从 /lib 使用的库之一。当我将可执行文件附带的一些库添加到我的 LD_LIBRARY_PATH 时,它会导致诸如 'ls' 'cp' 'ldd' 之类的简单命令的分段错误 ld-linux-x86-64.so.2 的一个版本也出现了使用此可执行文件,当我运行命令 ./ld-linux-x86-64.so.2 --list libc.so (或导致命令中断的其他库)时,它不会导致段错误。我希望能够使用随软件打包的 ld-linux-x86-64.so.2 进行测试,以确保解决了问题(并且没有 t 导致其他人)在去 IT 并让他们对我们将运行软件的所有机器上进行更改之前。或者,如果可能的话,将变通方法构建到我的工作脚本中,这样我就不必经历整个变更请求过程。

包含的 libc.so 与 ld-linux.so 不兼容的一个症状是当我尝试执行命令时如下所示。 cp:重定位错误:libc.so.6:符号 _dl_tls_get_addr_soft,版本 GLIBC_PRIVATE 未在文件 ld-linux-x86-64.so.2 中定义,带有链接时间参考 我是唯一一个使用我的机器的人,但我的公司赢了不要向用户授予 root 访问权限,因为如果您在一个 linux 机器上拥有 root 权限,那么网络的设置方式就是您在所有这些机器上都拥有它。

linux shared-libraries

1
推荐指数
1
解决办法
9647
查看次数

我在哪里可以下载 OpenSSL 的 .so

有谁知道是否可以从他们的网站下载最新的 OpenSSL 共享库?

我只能找到来源,所以也许他们不提供它。我知道我可以从源代码自己构建它,但我需要找到一个(可靠的)位置,我可以将人们指向,以便他们自己下载。

我需要 Linux、Solaris 和 Windows。

c openssl shared-libraries

1
推荐指数
1
解决办法
1253
查看次数