确定 elf 文件中的内核符号偏移量

确定 elf 文件中的内核符号偏移量

我使用 extract-vmlinux 从 bzImage 中提取了 ELF 文件(已删除),然后提取了 __ksymtab 和 __ksymtab_strings 部分。

如何计算这两个文件中任意符号的偏移量?

偏移量实际上存储在 __ksymtab 部分中吗?它是如何链接到 __ksymtab_strings 部分的?

是否有可能静态地获取偏移量?我的主要目标是从这个 ELF 文件中获取任意内核符号的偏移量(从内核基址)(已删除)。

如何获取特定内核版本(4.13.0-rc3)的任意内核符号的偏移量?

先感谢您。

答案1

知道了。

__ksymtab 条目直接链接到 __ksymtab_strings 部分。

有人可以告诉我,当我像本教程一样创建 linux+busybox 映像时,为什么没有 __ksymtab 和 __ksymtab_strings 部分:

http://www.zachpfeffer.com/single-post/Build-the-Linux-kernel-and-Busybox-and-run-on-QEMU

即使我在编译内核之前激活这些选项:

CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_BASE_RELATIVE=y

在这种情况下,ksym 偏移表位于 .rodata 部分

哪个配置选项是在 elf 文件中使用这些部分的原因?

相关内容