问题标签 [ld-preload]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何在上传前在图像鼠标悬停时 HTML 显示图像尺寸(高度和宽度)?
如何在上传前在图像鼠标悬停时 HTML 显示图像尺寸(高度和宽度)?类似于谷歌图片搜索...
... 我发现...
...但是该线程中提供的代码存在一些问题,而尺寸不是来自实际图像源,并且鼠标悬停文本出现在图像下方而不是覆盖在底部。
除了较小的文本位移......我如何像在 Google 图片中一样预取大小数据?谢谢。
c - LD_PRELOAD 哪个程序是目标
有没有办法确定哪个程序是 LD_PRELOAD 的目标程序?
就像libstuff
在 C/C++ 中构建库以及预加载库时一样,有没有办法确定目标程序是 stuff
?
这是一种安全的方法吗,如果文件是stuff
然后做的事情,否则就让lib死掉。
如果不建议这样做
问的原因是我得不到
使用LD_PRELOAD
定位program
而不是start-stop-daemon
我不知道这是否允许像这样偏离主题(对不起,以防万一),但如果有人可以帮助我,那也会让我开心。
提前致谢。
c - LD_PRELOAD - 可以拦截像 + 和 - 这样的原始运算符吗?
是否可以使用 LD_PRELOAD 拦截像这样的原始操作(+、-、% 等)?
如果没有,有什么方法可以实现类似的东西?
c++ - 使用 LD_PRELOAD 拦截 c++ 类构造函数
我按照这个例子拦截了一个类中的 C++ 函数。
但是现在我想拦截类的构造函数和析构函数,而不仅仅是成员函数。
在这个例子中,他做到了typedef unsigned int (Foo::*methodType)() const;
。我不认为你可以在 C++ 中 typedef 构造函数/析构函数。
我该怎么做呢?
c++ - 在某些情况下不调用覆盖 fopen 函数?
我试图覆盖某个进程的所有文件相关函数,作为预加载库,我将这段代码编译为预加载库,然后我只运行该进程并查看标准输出:
这可以编译g++ -Wall -fPIC -shared -o hooks.so hooks.cpp -ldl
然后只需使用任何使用 fifos 的程序:
问题是,该程序似乎出于某种原因使用了 libio/iofopen.c 中的函数 _IO_new_fopen,所以: 1. 有没有办法强制它使用 fopen?最初是如何使用这个功能的?或 2. 我可以覆盖它吗?我尝试了相同的签名,但它没有工作..
更新:从调用回调的应用程序的某些地方,所以我确信这是一些包含,并且必须有一种方法来覆盖它.. 但是如何?
python - 如何在运行时覆盖 C 函数(如使用 LD_PRELOAD)?
我有一些使用实现虚拟文件系统的库的 Python 代码。为了使这些虚拟文件系统的驱动程序能够工作一堆 C 函数(如 readdir()、opendir()、fseek()),需要覆盖/替换 - 使用 .so/.cpp 文件中定义的替换。通常这可以通过将 LD_PRELOAD 设置为该 .so 文件来完成。但是,我需要能够在运行时覆盖这些函数,并且理想情况下,一旦使用这些覆盖函数的 Python 函数执行完毕,就可以恢复为非覆盖函数。这可能吗?
c - 在 C 中覆盖 getdirentries
我想覆盖 getdirentries(和其他,如 lstat)libc 系统调用。我可以覆盖 - 例如 - lstat 和 chmod,但我不能覆盖 getdirentries(以及其他 fstatfs)。
示例代码是:
我在 FreeBSD 上编译它:
(在 Linux 上,可能需要添加 -ldl)并将其与 LD_PRELOAD=./preload.so bash 一起使用。
如果我随后发出 ls -l,我会多次打印“lstat”,这很好。但是根据 ktrace,ls 也调用了多个 getdirentries,并且它的覆盖函数不会被调用。fstatfs 也不起作用。
如何覆盖 getdirentries、fstatfs 和可能的其他系统调用,以及为什么它们在这种情况下不起作用?
谢谢,
c++ - 为什么不鼓励使用 LD_PRELOAD?
我在 Google 的tcmalloc文档页面上看到了这条建议。
您可以使用 LD_PRELOAD 在您没有自己编译的应用程序中使用 TCMalloc:
LD_PRELOAD 比较棘手,我们不一定推荐这种使用模式。
为什么他们不鼓励 LD_PRELOAD?有什么本质上的问题吗?正常链接更健壮吗?如何?
linux - LD_PRELOAD 导致动态库加载器中的分段错误
我编写了一个库,旨在通过LD_PRELOAD
. 在某些 Linux 系统上,这会导致动态库加载器在初始化期间出现段错误。
我有一个显示这种行为的简单测试用例,但前提是我链接到-lm
. 例如:
奇怪的是,这libm.so
似乎包含在两个版本中:ldd
显示完全相同的库集,只是顺序不同:
谷歌将我定向到LD_DEBUG
,这也指出libm.so
了问题的一部分:
不幸的是,我可以重现此问题的唯一机器似乎没有可用的动态库加载器的调试符号(而且我没有任何管理权限),因此 GDB 不会产生任何有用的东西:
找到这个问题的根本原因的最佳方法是什么?
c - 在 LD_PRELOAD 加载的 C 库中使用 "::" 挂钩函数
我想使用 LD_Preload 编写一个名为“CSys::Printf”的函数,但我认为这不会那么容易,因为在 C 中你不能在函数名称中包含“::”,这将需要匹配原始函数名。
用于挂钩的一段代码如下所示:
好吧,这应该适用于挂钩任何函数,除了这种情况,编译器不会接受函数名称上的“::”。
我应该怎么办?
谢谢!