jjzjj

preloader

全部标签

在运行时更改库加载顺序(如 LD_PRELOAD 但在执行期间)

如何更改函数在运行时加载的库?例如,假设我想用新的东西替换标准的printf函数,我可以编写自己的版本并将其编译到共享库中,然后将“LD_PRELOAD=/my/library.so"在运行我的可执行文件之前在环境中。但是,我想从程序本身内部更改该链接。这肯定是可能的……对吧?编辑不,以下内容不起作用(但如果你能告诉我如何让它起作用,那就足够了)。void*mylib=dlopen("/path/to/library.so",RTLD_NOW);printf=dlsym(mylib,"printf"); 最佳答案 据我所知,这是不可

linux - 为什么在初始化之前通过 LD_PRELOAD 操作加载库?

在下面的最小示例中,通过LD_PRELOAD加载的库具有拦截fopen和openat的函数显然在其初始化之前运行。(Linux是CentOS7.3)。为什么??库文件comm.c:#define_GNU_SOURCE#include#include#include#includetypedefFILE*(*fopen_type)(constchar*,constchar*);//initializetoinvalidvalue(non-NULL)//init()shouldinitializethiscorrectlyfopen_typeg_orig_fopen=(fopen_type

linux - 为什么在初始化之前通过 LD_PRELOAD 操作加载库?

在下面的最小示例中,通过LD_PRELOAD加载的库具有拦截fopen和openat的函数显然在其初始化之前运行。(Linux是CentOS7.3)。为什么??库文件comm.c:#define_GNU_SOURCE#include#include#include#includetypedefFILE*(*fopen_type)(constchar*,constchar*);//initializetoinvalidvalue(non-NULL)//init()shouldinitializethiscorrectlyfopen_typeg_orig_fopen=(fopen_type

linux - LD_PRELOAD 未加载到 systemd

我正在尝试将SO注入(inject)到开始使用systemdinit系统(使用LD_PRELOAD)的进程中,但它没有加载到新进程中。我编写了一个基本的SO(unrandom.c):intrand(){return42;//themostrandomnumberintheuniverse}使用命令行:gcc-shared-fPICunrandom.c-ounrandom.so我更改了.service文件以包含:Environment="LD_PRELOAD=/tmp/unrandom.so"服务启动后进程中存在LD_PRELOAD环境变量,但SO没有注入(inject)cat/proc

linux - LD_PRELOAD 未加载到 systemd

我正在尝试将SO注入(inject)到开始使用systemdinit系统(使用LD_PRELOAD)的进程中,但它没有加载到新进程中。我编写了一个基本的SO(unrandom.c):intrand(){return42;//themostrandomnumberintheuniverse}使用命令行:gcc-shared-fPICunrandom.c-ounrandom.so我更改了.service文件以包含:Environment="LD_PRELOAD=/tmp/unrandom.so"服务启动后进程中存在LD_PRELOAD环境变量,但SO没有注入(inject)cat/proc

python - 如何在 Linux 上动态插入来自 Python 的 C 函数(没有 LD_PRELOAD)?

我如何在运行时(无LD_PRELOAD)拦截/挂接Linux上的fopen()之类的C函数,在Windows上绕道而行?我想从Python执行此操作(因此,我假设该程序已经在运行CPythonVM)并重新路由到Python代码。我只需要Hook共享库函数就可以了。我还想在不更改程序运行方式的情况下执行此操作。一个想法是基于ptrace()或重写使用dlsym()或在PLT中找到的代码并以为目标来推出我自己的工具ctypes-生成的C可调用函数,但我想我会先在这里问。谢谢。 最佳答案 您会从ltrace开发人员那里找到一种方法来执行此

python - 如何在 Linux 上动态插入来自 Python 的 C 函数(没有 LD_PRELOAD)?

我如何在运行时(无LD_PRELOAD)拦截/挂接Linux上的fopen()之类的C函数,在Windows上绕道而行?我想从Python执行此操作(因此,我假设该程序已经在运行CPythonVM)并重新路由到Python代码。我只需要Hook共享库函数就可以了。我还想在不更改程序运行方式的情况下执行此操作。一个想法是基于ptrace()或重写使用dlsym()或在PLT中找到的代码并以为目标来推出我自己的工具ctypes-生成的C可调用函数,但我想我会先在这里问。谢谢。 最佳答案 您会从ltrace开发人员那里找到一种方法来执行此

php - 是否可以使用 ajax/jquery 技术预加载页面内容?

是否可以预加载所有页面内容(如显示加载栏/动画gif..或加载文本..)直到内容完全加载然后显示给用户/访问者?如果这是可能的,你能给我一些指导或资源来实现这个目标吗?因为我能够轻松找到图像预加载器,但我正在寻找一种预加载技术,可以在显示之前预加载页面上的所有内容。 最佳答案 不需要为此使用Ajax。只需将页面的包装器divdisplay设置为none。然后在加载文档时将其更改为block。你的代码可能看起来像这样,使用vanillajavascript:functionpreloader(){document.getElement

php - 是否可以使用 ajax/jquery 技术预加载页面内容?

是否可以预加载所有页面内容(如显示加载栏/动画gif..或加载文本..)直到内容完全加载然后显示给用户/访问者?如果这是可能的,你能给我一些指导或资源来实现这个目标吗?因为我能够轻松找到图像预加载器,但我正在寻找一种预加载技术,可以在显示之前预加载页面上的所有内容。 最佳答案 不需要为此使用Ajax。只需将页面的包装器divdisplay设置为none。然后在加载文档时将其更改为block。你的代码可能看起来像这样,使用vanillajavascript:functionpreloader(){document.getElement

c++ - 为 LD_PRELOAD 设置我的库会使某些进程产生加载程序错误

当我尝试运行我只有执行权限的脚本时出现以下错误:uname:符号查找错误:/home/dumindara/random/sotest/a.out:undefinedsymbol:dlsym这是在我将LD_PRELOAD环境变量设置为/home/dumindara/random/sotest/a.out之后。a.out有一个测试malloc函数,内部调用dlsym。我在运行ls时没有遇到这个问题。大多数进程确实给出了这个错误。为什么会发生这种情况,我该怎么做才能让它发挥作用? 最佳答案 我无法对已接受的答案发表评论,但值得一提的是,当