1. arm-eabi-addr2line

address to file name and line number 바꾸기위한 툴이다. 기본적으로 arm-eabi-[version] arm 컴파일러로 컴파일한 바이너리파일을 타겟으로 사용하며 stack_chk_fail 같이 stack guard 다른 여러 error 발생했을 error발생의 원인이 되는 주소 값이 정확히 어떤 file 어떤 부분에 의해서 발생하는지 있게 도와주는 도구이다.

 

1) 옵션

ex) addr2line -e *.elf 0x2555

.elf 끝나는 바이너리 파일의 0x2555주소값에 있는 file line 출력해준다.

 

2. arm-eabi-objdump

objdump 바이너리 파일을 역어셈블리어 출력해주는 리버싱 역할을 진행한다. 특정주소에 대한 디버그 값들 예를들어 어떤스택에 들어가있는지 그리고 해당 주소로 어떤 어셈블리어 명령들이 수행되고있는지를 체크하기 위함으로 사용가능하다. 쉽게 정적 리버싱 툴이다.

 

1) 옵션

-d : disassembly 기본적으로 디어셈블을 해준다. .text section 같이 실행 코드가 들어있는 section 대해서만 디어셈블을 시도한다. <가장많이사용>

-D : 모든 section 대해서 디어셈블을 진행한다.

-S : 어셈블리어 수준이 아닌 코드수준으로 디어셈블을진행해줌

 

ex) objdump -d *.elf | grep "0x2555"

0ex2555 위치에 대해서 디어셈블된 어셈블리어 명령문 코드를 확인할 있다. 굳이 address 아니여도 funtion name등으로도 function entry이런식으로 출력되기때문에 grep으로 필터링이 가능하다.

 

  • ref

https://manpages.debian.org/testing/binutils-arm-none-eabi/arm-none-eabi-addr2line.1.en.html

+ Recent posts