我想写一个小函数的跟踪器。我使用 ptrace。
当我看到一条 CALL 指令时,我想显示与地址调用等效的函数名称。
我的跟踪器使用具有绝对地址的符号(符号在主二进制文件中定义)。但是我不知道如何才能获得共享库函数在虚拟内存中的绝对地址。例如,检测对 libc 函数的调用。
我注意到共享库中函数的地址是相对于文件的。
下面的等式是好的吗?
Absolute address of symbol = address of the shared library in virtual memory +
relative address of the symbol.
如何从共享库中获取符号的绝对地址?