테스트는 Linux 32 비트에서 이루어집니다.
이 명령을 사용하여 .text
.rodata
및 .data
섹션 :
objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary
하지만 기본적으로 이것을 사용하여 .bss
섹션의 내용을 가져 오려고 할 때 항상 아래와 같은 오류가 발생합니다.
objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file
기본적으로 ELF 바이너리에서 .bss
섹션의 내용을 가져 오려면 어떻게해야합니까?
Answer
.bss
에는 콘텐츠가 없습니다. 프로그램을 시작할 때 일부 공간을 미리 할당하는 것은 로더에 대한 팁일뿐입니다. 실행시 모두 0이되며 프로그램이 쓸 때까지 유용한 정보를 보유하지 않습니다. 그런 다음 디버거를 사용하여 메모리를 덤프하고 콘텐츠를 탐색 할 수 있습니다.
자세한 내용은 Wikipedia 페이지 를 확인하세요.
p>
답변
.bss
기호로 시작되는 블록 ( 초기화되지 않은 데이터 세그먼트라고도합니다. bss
는 고대 IBM 칩에 대한 이전 어셈블리 명령어입니다.) 섹션에는 global variables
및
초기화되지 않았거나 0 또는 NULL로 초기화되었습니다. .bss
섹션은 일반적으로 프로그램 실행이 시작될 때까지 존재하지 않습니다. 이것이 바로 “정적으로 콘텐츠를 검색 할 수없는 이유입니다.이 섹션이 프로그램을 줄이는 데 도움이된다는 점에 유의하는 것이 매우 중요합니다.” s 크기 &는로드를 더 빠르게합니다.