IT 그리고 정보보안/Knowledge base

오브제트 파일 관련 명령어 (objdump, objcopy, nm)

plummmm 2021. 4. 18. 19:55
반응형

objdump 명령어

오브젝트 파일을 덤프하는 명령어

objdump는 무조건 하나 이상의 플래그 옵션을 주어야만 동작한다.

이 녀석이 할 수 있는 작업은 총 2가지로 분류할 수 있다.

 

1. 바이너리 덤프 작업

2. 파일 디스어셈블 작업

 

두개다 뭐 안에 어떻게 생겨먹었는지 까보는 개념은 같지만.. 목적이 다르니 플레그 옵션을 구분지어 설명하겠음.

 

1. 바이너리 덤프 작업

* objdump -s

일반적인 오브젝트 파일 덤프를 뜰 때 사용한다.

 

보통은 오브젝트 파일 형식이 elf32-i386 이므로 섹션별로 구분지어서 덤프하야 출력된다.

지정 가능한 오브젝트 파일 형식을 보는 명령어도 있다. -i 플레그를 주면 된다.

 

* objdump -j [섹션명]

-s 로 일반적인 덤프를 뜨면 섹션별로 구분이 된다고 했는데, -j 는 내가 원하는 세션만 출력하는 명령이다.

 

* objdump -h

섹션별로 뭐가뭐가 있는지 보고는 싶은데 너무 길어.. 그럴 때 섹션 헤더만 쫙 뽑아주는 명령어다.

 

* objdump -b 

통상 ELF 파일을 덤프 뜨면 섹션별로 구분지어 ELF에 맞는 덤프파일을 제공했는데, 그냥 순수하게

바이너리만 보고싶다. 그럴 때는 -b 옵션을 주면 된다.

이건 출력 옵션이 아니고 출력 형식에 대한 옵션이므로 반드시 -s 같이 출력 옵션과 같이 써야한다.

 

2. 파일 디스어셈블 작업

이제는 파일 디스어셈블 작업을 할 때 objdump 사용법을 알아보자.

* objdump -d

보통은 실행 코드가 들어있는 .text 섹션 같은 부분을 디스어셈블 한다.

모든 섹션을 다 디스어셈블 해보고 싶으면 -D (대문자) 옵션을 이용한다.

 

*objdump -j [섹션명]

위에 바이너리 덤프 할 때와 마찬가지로 특정 섹션만 디스어셈블 하고 싶을 때 -j 옵션으로

섹션을 지정해주면 된다.

더 많은 옵션이 있지만, 추후 다뤄보도록 한다.


objcopy 명령어

임의의 파일을 오브젝트 파일로 변환하는 명령어

사진, 동영상 같은 데이터들을 소스코드에 적용시키기 위해서 필요한 과정임.

직접 때려 박으면 컴파일할 때 용량 초과로 빡날 가능성이 농후하다.

그 뿐 아니라 뭐 다양한 용도로 링크 가능한 오브젝트 파일화 시키는 작업에서 필요하다.

objcopy는 형식 지정을 잘해주어야 한다.

 

 

x86용 ELF32 형식의 오브젝트 파일로 변환 시키는 것이다.

더이상 크게 설명이 필요없어서 이쯤 하겠음.

 

nm 명령어

nm 명령어에 대해 알아보자.

이건 오브젝트 파일에 포함된 심볼을 확인하는 명령어이다.

그냥 옵션없이 nm을 수행하면 오브젝트 파일의 심볼들이 offset으로 나온다.

오브젝트 파일의 주소에 대한 상대주소.

알파벳 순으로 1행씩 나옴.

 

실행파일의 심볼도  확인할 수 있다.

여러가지 플레그 옵션이 존재함

반응형

'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글

공유 라이브러리 (Shared Library)  (0) 2021.04.18
정적 라이브러리 (Static Library)  (0) 2021.04.18
ldd (List Dynamic Dependencies)  (0) 2021.04.18
ELF File Format  (0) 2021.04.18
od(octal dump)  (0) 2021.04.18