【发布时间】:2020-04-05 14:40:46
【问题描述】:
我之前有想过,链接到动态库的程序会查看/etc/ld.so.preload。
但是,我在某处读过
所有程序都试图打开 /etc/ld.so.preload,这种行为被嵌入到 Glibc 中。
因此,为了避免使用 glibc,我想到了用汇编代码编写程序。使用nasm 和ld 编译它。它仍在加载/etc/ld.so.preload 库。
我的最终目标是编写一个不尝试在/etc/ld.so.preload 中加载库的程序。
为此,我需要知道谁负责加载此程序以及如何编写这样的程序(无语言限制)?
PS:我真正的问题是我想编辑/etc/ld.so.preload 以包含我的库。但是如果这个库碰巧坏了,那么我机器上的每个命令都会中断,我无法在机器上做任何事情。因此,对于这种情况,我想保留一个实用程序,它可以从/etc/ld.so.preload 中删除我的库。在这种情况下,此实用程序以及sudo 必须完全静态链接。
【问题讨论】:
-
我对你的实际问题更感兴趣,你试图通过不使用标准 C 库来解决的问题。为什么不想使用平台标准 C 库?
-
如果你用静态链接编译我不认为它需要
ld.so.preload。 -
@Barmar 你是对的。该程序没有加载这些库,只是发现实际上我正在使用 sudo 运行它,而 sudo 需要 ld.so.preload。我们可以通过任何方式使 sudo 静态链接吗?
-
这是对(已删除)Compiling assembly program which will not use glibc 的重新询问,以防其他人看起来很熟悉。
-
@EmployedRussian 我已经编辑了帖子以包含我的真正问题
标签: assembly nasm ld glibc dynamic-linking