所以现在我正在尝试在我的反向工具中解析函数调用及其名称
我遇到的问题是诸如 printf 和 fwrite 之类的库函数在符号表中没有相应的地址,这与实际程序中的函数不同,它们在符号表中包含虚拟地址,因此我可以在以下情况下解析它们的名称它们被静态调用
基本上我想解析函数的名称,即使是像 printf 这样的静态库函数,就像 readelf 所做的一样(我尝试过 readelf 并且确实它确实解析了 printf 的名称,即使它说符号表中 printf 的地址值是 0 与其他函数不同所以不确定它是如何实现plt内部printf的偏移量的)
所以我有这些问题:
如何在 PLT 中找到 printf 的索引或地址,以便在看到“呼叫地址”时解析其名称
与代码中的函数不同,为什么符号表不包含这些函数的虚拟地址?考虑到这些是静态库并且在该程序中静态链接,它们不应该像其他函数一样具有固定地址吗?
该程序只是main中的一个printf函数,只包含stdio.h,现在我的理解是我静态地包含了stdio.h,考虑到我在开始时包含它并且在编译时没有使用任何特定选项。那么为什么它会进入 PLT 而不是 .text 部分并具有静态地址?我想当我在开始时包含一个库时,它基本上是将它复制并粘贴到我的 .text 部分中?