我有一个已经编译好的 Linux 可执行文件,它加载“libA.so”
我在可执行文件上使用 elfpatch 添加另一个所需的库“libB.so”
在我的 libB.so 上,我可以毫无问题地调用 LibA.so 中存在的任何函数。但是,如果我尝试从主可执行文件调用函数,我会得到“符号查找错误未定义符号”
有没有办法编译 libB.so 来访问主可执行文件中的函数?或者我唯一的选择是使用 dlopen 访问该函数?
有没有办法编译libB.so来访问主可执行文件中的函数?
如果不重建主要可执行文件就不行。解释这里。
或者我唯一的选择是使用 dlopen 访问该函数?
这不是一个选项,如果未从主可执行文件导出该函数,
dlopen
将也无法在主可执行文件中找到该函数。
回答我的老问题,我认为在这个项目中,我能够通过地址从主可执行文件中调用函数,字面上是通过我正在工作的linux项目中的地址,主可执行文件总是加载在相对地址中,所以我只使用了 IDA ,得到了函数的正确地址,用绝对地址构建了函数的定义,并且它起作用了。如果不使用一些奇特的内存地址,也可以在 win32 中工作。