2012-07-02 7 views
7
  1. 일부 기호가 표시되고 elf 파일의 hexedit가 표시됩니다. 이 기호가 나타나는 부분을 어떻게 알 수 있습니까?ELF의 문자열 표

  2. strtabshstrtab의 차이점은 무엇입니까? 또한 심볼 열의 배열이 있습니까? 내가 이름 테이블에 인덱스를 얻을 때

, 그것은 strtab 또는 shstrtab에서 인덱스입니까?

답변

8

첫 번째 질문의 경우 제대로 이해하려면 elf 파일의 hexedit가 필요합니다.

두 번째 질문 - strtab은 문자열 테이블을 나타냅니다. shstrtab은 섹션 헤더 문자열 테이블을 나타냅니다.

우리는 ELF 헤더를 읽을 때 모든 ElfHeader 구조체에 e_shstrndx라는 멤버가 있음을 알 수 있습니다. 이것은 shstrtab에 대한 색인입니다. 이 색인을 사용하고 shstrtab에서 읽으면 해당 섹션의 이름을 찾을 수 있습니다.

strtab은 다른 모든 참조의 문자열 테이블입니다. ELF 객체에서 심볼을 읽을 때 모든 SYmbol 구조체 (Elf32_Sym)에는 st_name이라는 멤버가 있습니다. 이것은 해당 기호의 문자열 이름을 얻기위한 strtab에 대한 색인입니다.

기호 문자열 배열에 대해 자세히 설명해 주실 수 있습니까? 또한 이름표 란 무엇을 의미합니까?

다음 링크를 참조 할 수 있습니다 - Reading ELF String Table on Linux from C

희망이 귀하의 질문에 대답을 제공합니다.

+0

감사합니다. "다른 참고 문헌"이 무엇인지 예를 들어 주시겠습니까? 섹션 이름 은요? 그들은 또한 strtab에 나타 납니까? – user1479376

+0

멍청한 녀석은 며칠 동안 떨어져있었습니다. 섹션 이름은 .shstrtab에 저장됩니다. 다른 모든 참고 문헌에서 DIE 블록에 저장된 기호를 의미합니다. –

+0

답변으로 표시해야합니다. – Jichao