gpt4 book ai didi

Linux 库代码注入(inject)和对 SO 中同名函数的调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:17 25 4
gpt4 key购买 nike

我构建了一个 linux 共享对象,我将其注入(inject)第 3 方程序以使用 LD_PRELOAD 拦截一些动态函数调用。

第 3 方程序使用位于某个路径的 SO“libabc.so”。我注入(inject)的 SO 使用另一个 SO,也称为“libabc.so”,位于另一个路径(本质上相同,但代码略有差异)。

我现在的问题是,对出现在两个 libabc.so 中的函数“def”的调用总是由第一个解决。 (大概是因为它先加载了?!)我怎样才能用第二个 libabc.so 解决它们?

非常感谢!

最佳答案

除非自从我以前这样做以来发生了什么变化,否则您将需要 dlopen()您要传递调用的库并手动调用该函数,例如;

handle = dlopen("/path/to/libabc.so", RTLD_LAZY);
otherDef = dlsym(handle, "def");
orderDef(parameter);

LinuxJournal 有一个完整的例子,说明如何做这件事。 .

关于Linux 库代码注入(inject)和对 SO 中同名函数的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9546775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com