gpt4 book ai didi

c - LD_PRELOAD 和外部变量

转载 作者:太空狗 更新时间:2023-10-29 12:20:29 24 4
gpt4 key购买 nike

比如说,我想修改mmap。因此,我为此目的创建了一个新的共享对象文件,并使用 LD_PRELOAD 来代替原来的 mmap。但是,我需要引用一个变量,它是我的程序文件。我怎样才能做到这一点?我在某处读到有关弱引用的信息。那是这样做的方法吗?我不认为你可以使用 extern 因为你编译共享库而不是你的程序。对此有何建议?

其次,LD_PRELOAD 是否仅影响您代码中 mmap 的使用,或者例如从标准库中调用的 mmap libc.so 你的代码使用了什么?

最佳答案

使用 LD_PRELOAD 将影响对必须动态定位的函数的任何 调用,无论它是在您自己的代码中还是在由您的代码加载的共享库中.您可以使用 LD_DEBUG 来准确查看查找符号的位置。看看:

$ LD_DEBUG=help ls

这将向您显示可用的调试选项。请注意,此处的 ls 可以是任何动态链接的可执行文件。

我不确定您问题的第一部分是否完全确定。您是否尝试过使用 dlsym() 查找变量?

关于c - LD_PRELOAD 和外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688478/

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