我们可以在文件中包含一个 .so 文件 LD_PRELOAD 吗?

时间:2021-06-05 11:47:58

标签: shared-objects ld-preload

我有一个已编译并可能用 C 编写的文件。该文件需要一个 .so 文件(库文件)。 C 编译文件名为 /usr/local/solar/excusekey.so 库文件为 /usr/local/libsolar/libexcuse.so 当我删除 /usr/local/libsolar/libexcuse.so 然后我运行 /usr/local/solar/excusekey 然后它显示一个错误:

ERROR : ld.so object '/usr/local/libsolar/libexcuse.so' from 
LD_PRELOAD cannot be preloaded: ignored.

但是当我运行 unset LD_PRELOAD 并再次运行 /usr/local/solar/excusekey 时,它显示相同的错误。

/usr/local/solar/excusekey 是否在 C 代码中加载了 libexcuse.so 库?或者有其他技巧或方法吗?

1 个答案:

答案 0 :(得分:0)

<块引用>

/usr/local/solar/excusekey 是否在 C 代码中加载 libexcuse.so 库?

在对 excusekey 一无所知的情况下,我们无法判断。

可以编写一个应用程序来检查 LD_PRELOAD 是否包含所需的库,如果没有,则设置 LD_PRELOAD 并重新exec 本身。

这是否是这里正在发生的事情是任何人的猜测。

strace -s1024 -fve execve excusekey 下运行应用程序可能会提供有关应用程序正在做什么的线索。