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 파일에서 이러한 섹션을 사용하는 이유는 무엇입니까?