dlsym相关内容

什么是用于破坏 C++ 符号名称的 Linux 实用程序?

我有 c++filt 命令来对符号进行分解,有什么工具可以做相反的事情并破坏符号名称? 如果我想在一个损坏的 C++ 函数名称上调用 dlsym(),这将很有用.我宁愿不要在代码中硬编码这个名字,因为它可能会随着时间的推移而改变,因为新的编译器版本或新的编译器品牌正在使用,或者目前由于为多个平台编译. 是否有一种编程方式可以在运行时获取表示 C++ 函数的字符串,以便代码独立于编译器? ..
发布时间:2022-01-17 08:05:26 C/C++开发

pthread_cond_broadcast 被 dlsym 破坏?

我正在尝试使用 LD_PRELOAD 机制插入对 pthread_cond_broadcast 的调用.我插入的 pthread_cond_broadcast 函数只是调用了原始的 pthread_cond_broadcast.但是,对于一个同时调用 pthread_cond_wait 和 pthread_cond_broadcast 的非常简单的 pthread 代码,我要么在 glibc 中出 ..
发布时间:2022-01-12 16:23:33 其他开发

无法使用 dlsym 获取统计信息

我正在尝试为 stat/lstat/fstat 编写一个钩子,但我似乎无法从dlsym.我正在使用以下代码获取原始指针. orig_stat = dlsym(RTLD_NEXT, "stat");orig_lstat = dlsym(RTLD_NEXT, "lstat");orig_fstat = dlsym(RTLD_NEXT, "fstat"); 然而,所有三个变量都设置为 null 并且 ..
发布时间:2021-07-23 20:20:58 其他开发

如何使用LD_PRELOAD包装可变参数函数?

我必须对以下格式的可变参数执行动态链接: int foo(char * args,const char * f,...) 此处参数的数量是可变的.我想要实现的是,我想将获得的参数传递给我正在使用dlsym解决的原始函数.如果我不传递所有参数,则会不断出现细分错误.预先感谢. 解决方案 我认为您的问题与LD_PRELOAD或dlopen/dlsym无关:您只是想从可变函数调用可变函数 ..
发布时间:2021-05-03 19:04:00 其他开发

在共享库中定义抽象类的接口

说我有一个抽象的基类,定义如下: interface.hpp #ifndef INTERFACE_HPP#定义INTERFACE_HPP 1类接口{上市:虚拟空func()= 0;};#endif//INTERFACE_HPP 然后,我将翻译单元 test.cpp 编译为共享对象 test.so : test.cpp #include"interface.hpp"#incl ..
发布时间:2021-04-20 18:56:52 C/C++开发

pthread_cond_broadcast被dlsym破坏了?

我正在尝试使用LD_PRELOAD机制插入对pthread_cond_broadcast的调用.我插入的pthread_cond_broadcast函数仅调用原始的pthread_cond_broadcast.但是,对于非常简单的同时调用pthread_cond_wait和pthread_cond_broadcast的pthread代码,我要么在glibc中出现段错误(对于glibc 2.11.1 ..
发布时间:2020-11-15 23:59:49 其他开发

如何获得__NSAutoreleaseNoPool地址?

我尝试过 extern void __NSAutoreleaseNoPool(void* obj); 但是在链接时会导致无法解析的符号(尽管不确定它需要什么框架). 我也尝试过 dlsym(RTLD_DEFAULT, "__NSAutoreleaseNoPool") 但这只是NULL. 我尝试使用_dyld_lookup_and_bind和NSLookupSymbo ..
发布时间:2020-08-11 20:15:01 其他开发

使用符号表在C ++中按名称引用变量

基本上是标题要求的内容. 我不太了解C++和更高级的概念(例如符号表),因此我在线上对其进行了研究,但仍在努力寻找最终目标的任何方向.我见过的大多数教程都是针对C的,也是我发现的最接近的问题(到此为止,我希望能够从符号表访问变量,并更改该变量.我玩过nm和objdump(并且来自硬件背景,这绝对很酷),我研究了dlsym,dlopen等,但不确定如何可以帮到我(特别是因为我已经看到它在C语言 ..
发布时间:2020-07-10 18:38:50 C/C++开发

重复符号后如何可靠地使用dlsym?

晚上好,我目前正在基于 Plux.net 模型. 为简单起见,我基本上声明了一个带有extern C的符号(将其命名为pluginInformation)(以取消损坏),并且我的插件管理器在预配置的导入文件(.so)中查找该符号. 问题是主应用程序声明了相同的符号,不仅如此,而且它具有的任何依赖项也可能具有该符号. (由于使用了该pluginInformation,模块可以发布插头和/ ..
发布时间:2020-04-23 11:18:32 服务器开发

在iOS中使用dlsym按名称调用函数

我不能在iOS中按名称调用函数吗?我有一个名为 getstring 的C函数。我将其称为如下: void * handle = dlopen(NULL,RTLD_NOW); if(handle) { fp func = dlsym(handle,“getstring”); if(!func) responseField.text = [NSString stringWithU ..
发布时间:2018-09-20 21:31:32 移动开发

C ++中的工厂模式:生成显式createInstance() - 方法自动

我在写一个C ++框架时遇到问题,用户应该有比使用它更少的开销。用户可以通过创建一个包含一个类的共享库来发布他们的工作,该类由一个框架的BaseClass派生,并实现一个extern“C”createInstance() - 方法,以便返回一个实例的派生类。因此,框架可以通过使用dlsym()的共享库调用createInstance-Method来访问用户类。 class BaseClas ..
发布时间:2017-05-16 18:47:44 C/C++开发

使用dlsym导入的函数中的参数位置错误

我有一个奇怪的问题。当我使用共享库中的参数调用导入的方法时,在这些方法中我有错误的参数。它就像: x = 1; y = 2; z = 3; (* method)(x,y,z); 在方法中我有: void方法(int x,int y,int z){ // x = 2,y = 3,z = 32432423 - 像这样的东西 } 这里我如何导入: ..
发布时间:2016-10-30 00:41:59 C/C++开发

如何在运行时检测符号是否被剥离?

在我的C ++程序中,我如何在运行时以编程方式检测符号是否通过Linux上的“strip”gnu开发工具剥离? 在“main()”上使用dlsym()可以可靠地检测这种情况吗? 解决方案 我知道文件命令可以区分不同,所以你可以看看它的源以查看其使用的机制。 ..
发布时间:2016-10-23 14:50:52 C/C++开发