elf 바이너리 출력에 어떤 문자열이나 기호의 주소가 있고 strings -a
주소가 어느 부분에 있는지 알고 싶다고 가정해 보겠습니다.
objdump -h
일반적으로 주소가 포함된 부분 주소 범위를 수동으로 찾습니다 . 그러나 이는 오류가 발생하기 쉽고 매우 느립니다.
이 작업을 수행하는 더 쉬운 방법이 있습니까?
답변1
찾고 있는 주소를 알고 있는 경우(바이너리의 오프셋으로) 다음과 같이 사용할 수 있습니다.
objdump -h /path/to/binary |
awk -v target=address 'BEGIN { target = strtonum("0x" target) }
NF > 1 {
if (typeof($1) == "strnum") {
if (strtonum("0x" $6) <= target) { section = $2 }
}
}
END { print section }'
16진수 주소로 바꿉니다 address
.
$6
이 값은 바이너리 오프셋 대신 가상 주소를 검색하도록 필드( )를 변경하여 조정할 수 있습니다 .