我正在学习如何在Linux上使用C / C中的共享库 . 我遇到了一个我不知道如何解决的问题 .
让's say I have a shared library and an executable. However I don' t知道库's name or file location (so I can' t dlopen
它) . 我只能找到库映射到可执行文件内存的地址范围 .
有没有办法以编程方式获取库的句柄(类似于 handle = dlopen(library_address)
)或库中的符号偏移(类似于 address = dlsym(library_address, symbol_name)
)?
谢谢您的回答 .
1 回答
如果你知道图书馆的名字,你可以再次拨打
dlopen
.来自man page:
要发现已加载的模块,可以使用dl_iterate_phdr() .
您也可以使用dladdr()来查询特定地址 .