dlsym相关内容
我有 c++filt 命令来对符号进行分解,有什么工具可以做相反的事情并破坏符号名称? 如果我想在一个损坏的 C++ 函数名称上调用 dlsym(),这将很有用.我宁愿不要在代码中硬编码这个名字,因为它可能会随着时间的推移而改变,因为新的编译器版本或新的编译器品牌正在使用,或者目前由于为多个平台编译. 是否有一种编程方式可以在运行时获取表示 C++ 函数的字符串,以便代码独立于编译器?
..
我正在尝试使用 LD_PRELOAD 机制插入对 pthread_cond_broadcast 的调用.我插入的 pthread_cond_broadcast 函数只是调用了原始的 pthread_cond_broadcast.但是,对于一个同时调用 pthread_cond_wait 和 pthread_cond_broadcast 的非常简单的 pthread 代码,我要么在 glibc 中出
..
当我尝试运行我只有执行权限的脚本时出现以下错误: uname:符号查找错误:/home/dumindara/random/sotest/a.out:未定义符号:dlsym 这是在我将 LD_PRELOAD 环境变量设置为 /home/dumindara/random/sotest/a.out 之后. a.out有一个测试malloc函数,内部调用dlsym. 我在运行 ls
..
我正在尝试为 stat/lstat/fstat 编写一个钩子,但我似乎无法从dlsym.我正在使用以下代码获取原始指针. orig_stat = dlsym(RTLD_NEXT, "stat");orig_lstat = dlsym(RTLD_NEXT, "lstat");orig_fstat = dlsym(RTLD_NEXT, "fstat"); 然而,所有三个变量都设置为 null 并且
..
我有一个共享库,我想从主程序访问符号.例如: main.c #include void bar(void) { puts("bar");}外部无效 foo(void);int main(void) {富();返回0;} foo.c #include 外部无效酒吧(无效);无效 foo(void) {puts("foo");酒吧();} 我编译和运行如下: gcc -c -fpic
..
我必须对以下格式的可变参数执行动态链接: int foo(char * args,const char * f,...) 此处参数的数量是可变的.我想要实现的是,我想将获得的参数传递给我正在使用dlsym解决的原始函数.如果我不传递所有参数,则会不断出现细分错误.预先感谢. 解决方案 我认为您的问题与LD_PRELOAD或dlopen/dlsym无关:您只是想从可变函数调用可变函数
..
说我有一个抽象的基类,定义如下: interface.hpp #ifndef INTERFACE_HPP#定义INTERFACE_HPP 1类接口{上市:虚拟空func()= 0;};#endif//INTERFACE_HPP 然后,我将翻译单元 test.cpp 编译为共享对象 test.so : test.cpp #include"interface.hpp"#incl
..
我正在尝试使用LD_PRELOAD机制插入对pthread_cond_broadcast的调用.我插入的pthread_cond_broadcast函数仅调用原始的pthread_cond_broadcast.但是,对于非常简单的同时调用pthread_cond_wait和pthread_cond_broadcast的pthread代码,我要么在glibc中出现段错误(对于glibc 2.11.1
..
host.cpp具有: int main(void) { void * th = dlopen(“ ./ p1.so”,RTLD_LAZY); void * fu = dlsym(th,“ fu”); ((void(*)(int,const char *))fu)(2,“ rofl”); 返回0; } p1.cpp具有: #include
..
简介 让我为这个长期的问题道歉。 设置 我定义了两个接口A和B: class A //接口 { public : virtual〜A(){} virtual void what_A()= 0; }; B类//另一个接口 { public: virtual〜B(){} virtual void what_B()= 0; };
..
我尝试过 extern void __NSAutoreleaseNoPool(void* obj); 但是在链接时会导致无法解析的符号(尽管不确定它需要什么框架). 我也尝试过 dlsym(RTLD_DEFAULT, "__NSAutoreleaseNoPool") 但这只是NULL. 我尝试使用_dyld_lookup_and_bind和NSLookupSymbo
..
基本上是标题要求的内容. 我不太了解C++和更高级的概念(例如符号表),因此我在线上对其进行了研究,但仍在努力寻找最终目标的任何方向.我见过的大多数教程都是针对C的,也是我发现的最接近的问题(到此为止,我希望能够从符号表访问变量,并更改该变量.我玩过nm和objdump(并且来自硬件背景,这绝对很酷),我研究了dlsym,dlopen等,但不确定如何可以帮到我(特别是因为我已经看到它在C语言
..
我正在尝试在代码中使用dlopen()和dlsym()并使用gcc进行编译. 这是第一个文件. /* main.c */ #include int main() { void *handle = dlopen("./foo.so", RTLD_NOW); if (handle) { void (*func)() = dlsym(
..
当我尝试运行仅具有执行访问权限的脚本时,出现以下错误: uname: symbol lookup error: /home/dumindara/random/sotest/a.out: undefined symbol: dlsym 这是在我将LD_PRELOAD环境变量设置为/home/dumindara/random/sotest/a.out之后. a.out具有一个测试ma
..
晚上好,我目前正在基于 Plux.net 模型. 为简单起见,我基本上声明了一个带有extern C的符号(将其命名为pluginInformation)(以取消损坏),并且我的插件管理器在预配置的导入文件(.so)中查找该符号. 问题是主应用程序声明了相同的符号,不仅如此,而且它具有的任何依赖项也可能具有该符号. (由于使用了该pluginInformation,模块可以发布插头和/
..
我不能在iOS中按名称调用函数吗?我有一个名为 getstring 的C函数。我将其称为如下: void * handle = dlopen(NULL,RTLD_NOW); if(handle) { fp func = dlsym(handle,“getstring”); if(!func) responseField.text = [NSString stringWithU
..
我在写一个C ++框架时遇到问题,用户应该有比使用它更少的开销。用户可以通过创建一个包含一个类的共享库来发布他们的工作,该类由一个框架的BaseClass派生,并实现一个extern“C”createInstance() - 方法,以便返回一个实例的派生类。因此,框架可以通过使用dlsym()的共享库调用createInstance-Method来访问用户类。 class BaseClas
..
我有一个奇怪的问题。当我使用共享库中的参数调用导入的方法时,在这些方法中我有错误的参数。它就像: x = 1; y = 2; z = 3; (* method)(x,y,z); 在方法中我有: void方法(int x,int y,int z){ // x = 2,y = 3,z = 32432423 - 像这样的东西 } 这里我如何导入:
..
我已经构建一个补丁附加到某个应用程序,并跟踪一些函数的调用。其中,malloc()和open()。我使用dlsym存储指向原始符号的指针,并用我自己的函数名称替换。它编译和工作 - 完全在linux下。以下是代码: #define _GNU_SOURCE #include #include #include #
..
在我的C ++程序中,我如何在运行时以编程方式检测符号是否通过Linux上的“strip”gnu开发工具剥离? 在“main()”上使用dlsym()可以可靠地检测这种情况吗? 解决方案 我知道文件命令可以区分不同,所以你可以看看它的源以查看其使用的机制。
..