2013-06-10 5 views
1

섹션 .init은 어떻게 찾을 수 있습니까? 섹션 헤더의 필드는 Elf32_Word sh_name입니다. 그래서 나는 모든 섹션을 통해 이름이 하나 인 것을 발견해야만한다고 생각한다. .init 그러나 은 문자 배열이 아니다. 이것은 String Table의 엔트리 인덱스입니다. String Table은 어디에 있습니까? ELF 헤더에 필드 elfHdr.e_shstrndx이 있습니다. 거기에 섹션의 색인입니다 문자열 테이블이 자리 잡고 있습니다. 문자열 테이블의 오프셋을 계산하려면 아래에 설명 된 수식을 사용하십시오.ELF 파일의 .init 섹션 검색

offset = ((elfHdr.e_shstrndx)*elfHdr.e_shentsize)+elfHdr.e_shoff, 
where 
elfHdr.e_shstrndx = index where we can find .shstrtab 
elfHdr.e_shentsize = Size of each Section Header 
elfHdr.e_shoff = Offset at which section header starts. 

그러나 오프셋은 문자열 테이블의 올바른 오프셋이 아닙니다. 나는 다양한 파일에 그것을 시도했다. 섹션이 .init인지 여부를 확인하는 또 다른 방법이 있습니까?

답변

1

거의 제대로 된 것처럼 보입니다.

계산 한 offset은 문자열 테이블 섹션의 섹션 헤더의 파일 오프셋 (바이트)입니다. 다시 말하지만, 이것은이 섹션 헤더의 시작 부분이며 Elf32_Shdr 유형의 구조가됩니다. 이제 sh_offset을 읽어야합니다.은 찾고있는 문자열 목록에 대한 오프셋이됩니다.

+0

고마워요! 맞아. – Qwerty

관련 문제