고급 개발자로 가는 길

Embedded/Linux Kernel

[Linux Kernel] objdump 바이너리 유틸리티

다크엔지니어 2022. 1. 30. 23:14
반응형

objdump 인 바이너리 유틸리티를 다루어 볼 것이다.

바이너리 유틸리티는 오브젝트 포멧의 파일을 조작 할 수 있다.

보통 라이브러리나 elf 형식의 파일을 어셈블리어 or 섹션 정보 등 출력이 가능하다.

아래는 vmlinux 를 vi 에디터로 열었을 때의 상황이다. objdump 를 통해 아래 파일을 분석 해보자

 

먼저 objdump 의 옵션을 아래와 같이 볼 수 있다.

 

-x 옵션을 통해 섹션 정보 확인이 가능하다. start 어드레스 영역과 아키텍처 정보도 확인 가능하다.

objdump -x vmlinux | more

 

 

다음은 -d 옵션을 통해 어셈블리어로 확인 가능하다.

objdump -d vmlinux | more

 

하지만 위 처럼 많은부분을 어셈블리어 만으로 보기는 힘들다. 

그럴땐 address 로 특정부분 어셈블리어로 확인이 가능하다.

smsc_crc 부분을 System.map 을 통해 빌드 된 Symbol Address 를 확인 할 수 있다.

 

System.map 에서 확인 된 smsc_crc address 를 옵션에 넣어 특정 부분 어셈블리어를 볼 수 있다.

objdump --start-address=0xc0bbeeac --stop-address=0xc0bbeee9 -d vmlinux

 

반응형