我知道如何用LD_PRELOAD覆盖一个库,例如,如下所示。

LD_PRELOAD =。/ getpid.so ./testpid

现在我的问题是如何覆盖多个文件。 假设我想覆盖getpid和getid,我该如何指定?

===============>>#1 票数:52

根据手册页 ,它是一个空格分隔列表。 所以:

LD_PRELOAD="path1 path2"

应该工作。

===============>>#2 票数:4

一种选择是将getpidgetid的重写版本都放在一个.so ,并将其提供给LD_PRELOAD

  ask by MetallicPriest translate from so

未解决问题?本站智能推荐:

1回复

错误:ld.so:LD_PRELOAD中的对象'getpid.so'无法预加载:忽略

当我尝试使用LD_PRELOAD时,如下 我收到以下错误... 我使用编译getpid.so 它包含以下代码...... tespid.c使用getpid的tespid.c代码,如下所示,并通过执行编译 这可能是什么问题? 为什么LD_PRELOAD不起
3回复

帮助使用LD_PRELOAD

我想创建一个带有修改版本的printf的库,然后调用LD_PRELOAD,这样当我的程序调用printf时它会使用我的版本。 有人可以向我解释如何使用LD_PRELOAD,如果我需要在我的代码或库中做一些特殊的事情吗?
1回复

在linux中使用LD_PRELOAD钩子strcmp?

因为我想挂钩strcmp,代码如下: 我的问题是:为什么strcmp会在这两个条件下出现差异?
2回复

使用makefile,LD_PRELOAD到可执行文件

我有两个文件“ abc.c”和“ run” 我想制作一个可执行的二进制文件,该文件执行以下两个指令 我试图在Linux中使用makefile,但是失败了。 我可以使用makefile制作可执行二进制文件吗?
1回复

LD_PRELOAD与boost文件系统库

我试图拦截Linux中的开放系统调用。 它适用于其他库,但不使用boost libboost_fileystem。 这是我的代码(为了便于阅读而删除)。 我使用gdb逐步执行代码,我的open实现不会被调用。 但是做strace会显示被调用的开放系统调用。 如果我调用其他调用op
2回复

使用Linux功能是否会禁用LD_PRELOAD

在我的自定义环境中,预加载了一个拦截器库,它运行bind() , connect()等调用的特殊实现。 我看到的问题是,只要应用程序使用命令setcap显式启用功能,执行应用程序就无法预加载拦截器库并调用默认的libc connect() 。 这是预期的行为吗? 如果是,那么禁用L
1回复

LD_PRELOAD无法与我的程序配合使用

为了测试LD_PRELOAD,我编写了自己的getpid ,它会在使用dlsym调用原始getpid之前打印出一些内容。 代码如下。 但是,当我在程序中使用此类getpid并使用LD_PRELOAD运行它时,通过键入LD_PRELOAD=./prelib.so ./prog ,出现以下
1回复

有时仅使用LD_PRELOAD覆盖execve()

我想通过使用LD_PRELOAD覆盖execve()syscall,无法弄清为什么有时起作用而有时不起作用。 考虑一下覆盖execve()的非常简单的代码(我将使其完整,以便您可以尝试使用): (编译为: gcc -std=c99 -o exec.so -shared exec.c
5回复

如何在LD_PRELOAD中使用gdb

我运行带有LD_PRELOADing特定库的程序。 像这样。 如何使用gdb运行该程序?
3回复

为什么LD_PRELOAD不能与Python一起使用?

使用Python的open()函数插入在前几次调用后似乎不起作用。 我怀疑Python正在进行某种初始化,或者某些东西暂时绕过我的功能。 这里的open电话显然很有吸引力: 在Python初始化过程中它会发生一次: 在这里根本没有发生,并且没有错误表明文件句柄已删除写权限