'파일 덤프'에 해당되는 글 2건
- 2011.07.03 [Hack #9] objdump - (1) 오브젝트 파일 덤프
- 2011.06.29 [Hack #4] od - 바이너리 파일 덤프
[ 일반적인 ELF 바이너리 덤프 ] |
♧ 『 -s | --full-contents 』 :: 모든 섹션의 전체 내용을 표시.
▶ 일반적인 덤프. # objdump -s /bin/ls
▷ 덤프 형식 :: [메모리 주소] [16진수 덤프 (4바이트 * 4)] [ASCII 표시] ▷ 여기서 16진수 덤프는 x86과 같은 리틀 엔디안 아키텍처에서 실행해도 빅 엔디안으로 출력. ▷ objdump에는 -endian 옵션이 있지만 이 옵션은 단지 디스어셈블할 경우에만 영향을 줄 뿐, 출력 시에는 영향을 주지 않는다. ▷ 통상 elf32-i368이므로 섹션 별로 식별해서 덤프 하게 된다.
▷ 오브젝트 형식은 -b 옵션 (--target옵션)으로 지정. ▷ 지정 가능한 오브젝트 형식은 -i 옵션 (--info 옵션)으로 확인.
...(중략)...
|
[ ELF 바이너리의 특정 섹션 덤프 ] |
♧ 『 -j section | --section=section 』 :: 특정 섹션을 지정하여 덤프
▶ 특정 섹션 지정하여 덤프 # objdump -s -j .interp /bin/ls
▷ 어떤 섹션이 존재 하는지 확인하기 위해 -h 옵션(--sction-headers, --headers)으로 출력.
...(중략)... |
[ 주소 범위를 지정하여 덤프 ] |
♧ 『 --start-address=address 』 『 --stop-address=address 』 :: 덤프할 주소 범위를 지정하여 덤프.
▶ 0x8048154 ~ 0x80481bc까지 주소 지정하여 덤프. # objdump -s --start-address=0x8048154 --stop-address=0x80481bc /bin/ls
|
[ objdump로 바이너리 덤프 ] |
♧ 『-b bfdname | --target=bfdname』 :: ELF 형식이 아닌 파일 또는 ELF 파일을 그저 바이너리 파일로 덤프 하고자 할 경우에는 오브젝트 형식으로 binary를 지정.
# objdump -s -b binary /etc/ld.so.cache
...(중략)... ▷ 이런 경우 주소는 파일 오프셋과 같다. ▷ binary로 지정하면 섹션별로 나눠어서 출력되지 않는다. ▷ binary 형식은 자동 인식되지 않으므로 반드시 옵션을 지정.
|
'컴퓨터 서적 정리 > Binary Hacks' 카테고리의 다른 글
[Hack #11] objcopy - 실행 파일에 데이터 삽입하기 (0) | 2011.07.03 |
---|---|
[Hack #10] objdump - (2) 오브젝트 파일 역어셈블 (0) | 2011.07.03 |
[Hack #8] readelf - ELF 파일 정보 보기 (0) | 2011.07.02 |
[Hack #7] ldd - 공유 라이브러리 의존관계 확인 (0) | 2011.07.02 |
[Hack #6] 정적 라이브러리와 공유 라이브러리 (1) | 2011.07.02 |
♧ od는 octal dump(『octal』은 8진법을 뜻함)로, 기본적으로 바이너라 파일을 8진수로 덤프해서 출력.
[ 기본적인 8진수 덤프 ] |
⊙ 행 앞 첫 컬럼에 해당하는 숫자(밝은녹색 테두리 부분)는 시작점으로부터의 오프셋을 8진수로 표시한 것. (※ offset은 좌측 메모리 시작점을 0으로 하여 숫자를 통해 위치를 알려주는 좌표계 역할을 함) |
[ 출력 형식 지정 ] -t옵션(--format=TYPE) |
||||||||||||||||||||||||||||||||||||||||||||||
⊙ 일반적으로 8진수 보다 16진수로 표시되는 게 알기 쉽다.
(※ a,c → 바이트 단위로 출력)
⊙ 오프셋 표기도 8진수 외에 다른 형태로 표시할 수 있다. '-A 옵션'에 다음 지정자를 이용하면 오프셋의 기수를 변경할 수 있음.
⊙ 또한 z를 덧붙이면 우측에 ASCII문자 표시가 추가.
ex) 출력 형식을(-t) 16진수(x) 1Byte단위(1)로 출력하고 우측에 ASCII문자 표시를 추가(z) 오프셋의 기수를 16진수로 출력(-A x) |
[ 덤프를 생략하지 않기 ] -v옵션 (--output-duplicates) |
⊙ 기본적으로 od는 같은 내용이 여러 행에 걸쳐 반복될 경우 그 부분을 생략 한다.
[ 0x0021d0~0x002220 까지는 00이 계속되고 있으므로 『*』와 같이 생략]
이 부분을 생략하지 않으려면 -v 옵션을 사용한다. |
[ 문자열 덤프 기능] -S옵션 (--strings) |
⊙ od에는 strings처럼 문자열 덤프 기능이 있다. ASCII문자가 최소 세 자리 이상이고 \0으로 끝나는 바이트 열을 찾아 오프셋과 내용을 표시한다.
⊙ 다음은 위와 같지만 '--strings'옵션을 사용하고 '-An'으로 오프셋 출력을 하지 않는다.
(※ 책에서는 '소문자 -s옵션' 이라고 되어 있지만 이건 예전 버전의 옵션이다. 현재 버전에서는 '대문자 -S 옵션'이며 출력되는 최소문자 바이트를 넣어 주어야 한다. 그러므로 그냥 일반 적인 경우는 "--strings" 옵션을 사용하는 것이 호환성 측면에서 좋을 듯하다.) |
※ 버전 별로 옵션이 조금씩 틀리므로 man od로 확인 하여 사용하자.
테스트 환경 :
'컴퓨터 서적 정리 > Binary Hacks' 카테고리의 다른 글
[Hack #6] 정적 라이브러리와 공유 라이브러리 (1) | 2011.07.02 |
---|---|
[Hack #5] Object file - ELF 파일 (0) | 2011.07.01 |
[Hack #3] file – 파일 종류 확인 (1) | 2011.06.29 |
[Hack #2] Binary Hack 용어 정리 (1) | 2011.06.29 |
[책소개] Binary Hacks (0) | 2011.06.29 |