주소의 ELF 부분을 자동으로 가져오는 방법이 있습니까?

주소의 ELF 부분을 자동으로 가져오는 방법이 있습니까?

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이 값은 바이너리 오프셋 대신 가상 주소를 검색하도록 필드( )를 변경하여 조정할 수 있습니다 .

관련 정보