gpt4 book ai didi

linux - 如何提取符号并查看它们在文件中的偏移量

转载 作者:IT王子 更新时间:2023-10-29 00:37:56 24 4
gpt4 key购买 nike

我可以使用“nm -a -D”命令提取符号。
但是有没有一种方法可以从文件的开头提取带有偏移量的符号名称?

例如,

nm -D ./libc.so

给我看这个 -

...
00000000000f8c60 T xdr_wrapstring
00000000000f7cc0 T xencrypt
00000000000bd230 T __xmknod
00000000000bd2a0 T __xmknodat
000000000003ec70 T __xpg_basename
00000000000314b0 W __xpg_sigpause
0000000000080db0 T __xpg_strerror_r
00000000000f6090 T xprt_register
00000000000f61f0 T xprt_unregister
00000000000bd110 T __xstat
00000000000bd110 T __xstat64

现在,我想获取符号名称从文件开头的偏移量,就像“strings -t x”命令显示字符串偏移量的方式一样 -

strings -t x ./libc.so | grep __xstat
13af9 __xstat
13fac __xstat64

我该怎么做?

(我不能在“nm”命令的输出上使用“strings”命令,因为文件中可能有多个相同符号字符串的实例,我想获得符号的准确偏移量(不是只是一些与符号相同的字符串))

最佳答案

But is there a way to extract the symbol names with an offset from the start of the file?

肯定是:nm 正在这样做(为了打印名称)。

您应该知道可能有两个 符号表:一个常规表和一个动态表(nm -D 显示后者)。

符号本身存储在 .dynsym 部分(或常规符号表的 .symtab 部分),它们包含 .dynstr< 的偏移量 部分(实际上包含名称)。

因此添加 ".dynstr".sh_offset + "symbol".st_name 将为您提供文件中符号名称的偏移量。

示例代码 here . (代码使用 .symtab.strtab;您需要调整它以使用 .dynsym.dynstr 来打印动态符号表。)

关于linux - 如何提取符号并查看它们在文件中的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com