我正在研究 Linux X86_64。
在给定条目所代表的动态函数的名称的情况下,我需要确定 ELF 文件中特定 PLT 条目的地址。我可以从地址中找出文件偏移量,但我需要能够确定地址。
如果我使用反汇编 ELF 文件,objdump -D -z elffile
我会看到 objdump 为 PLT 中的每个条目使用符号名称。(objdump从哪里获得这些地址和符号名称之间的关系?)
例子:
0000000000000041a2b0 fileno@plt:
如果我使用objdump -T elffile | grep fileno
我会得到这样的东西:
0000000000000 DF *UND* 00000000000000000 GLIBC_2.2.5 fileno
我需要能够从“C”做的是在ELF文件中找到特定动态函数的PLT条目并获取地址。
背景是我正在修补现有的 ELF 文件,需要将函数调用重定向到不同的动态函数。我已经使用从 objdump 反汇编收集的地址手动修补了 ELF 文件,并证明这适用于我的特定应用程序,我只需要能够从程序中完成它。我希望不必爬过 objdump 反汇编代码来弄清楚它是如何获取 PLT 条目符号和地址的。