Linux/Linux_technic

od - 바이너리 파일 덤프

sosal 2009. 10. 23. 01:38
반응형
/*
 http://sosal.tistory.com/
 * made by so_Sal
 */



od = octal dump (octal = 8진법)라는 의미로, 바이너리 파일을 8진수로 덤프해서 줄력하는 명령어입니다.

od /bin/bash | head -5


head -5 는 출력되는 줄의 윗부분 5줄만 거른다는 뜻입니다.
맨 왼쪽 00000*0은 시작점으로부터의 offset을 8진수를 표시한 것입니다.
(offset은 좌측 메모리 시작점을 0으로 하여 숫자를 통해 위치를 알려주는 좌표계 역할을 함)
2바이트씩 8개, 16바이트씩 출력하기 때문에 00,20,40... 으로 늘어나게 됩니다.

출력 형식 지정 (-t 명령어)

   의미 
 a  문자의 이름(7비트 ASCII)
 c  ASCII 문자 또는 escape 문자
 d  부호가 있는 10진수
 f  부동소수점 수 
 o  8진수 
 u  부호가 없는 10진수
 x  16진수

일반적으로 8진수보다 16진수가 이해하기 쉽다.
-t 옵션은 위 표와 같은 형을 지정한다.
a,c :: 바이트 단위로 출력, d,o,u,x는
바이트 수 또는 아래 표에 있는 크기 지정자를 사용할 수 있습니다.


의미
C char (1)
S short  (2)
 I int  (3)
L long (4)


od -t x1 /bin/ls  ==  od -t xC /bin/ls
위 2 명령어는 동일합니다.

출력 형식 지정 (-f 명령어)

  의미 
 F float 
 D double
 L long double

또한 z를 붙이면 우측에 ASCII  문자 표시가 추가됩니다.
오프셋 표기도 8진수 이외에 -A 옵션으로 기수를 변경할 수 있습니다.
d o x n (차례대로 10진수 8진수 16진수, 표기 x )

od에는 문자열 덤프기능이 있습니다. (strings 와 비슷)
-S + 숫자 :: ASCII 문자가 최소 '숫자' 이상이고 \0으로 끝나는 바이트 열을 찾아
offset과 내용을 표시해주는 옵션입니다.

od -Ax -S 2 /bin/bash
bash파일에 offset을 16진수로 표시(-Ax)하고,
파일 안에 있는 소스 문자열중 최소 2자리 이상 출력하라는 명령입니다.

ex)
od -t x1z -A x /bin/bash



암호를 입력하면 passwd를 출력하는 프로그램을 만들어보고,
od 명령으로 출력될 passwd가 뜨는지 확인해 보시면
od명령을 까먹지 않을것 같네요..

'Linux > Linux_technic' 카테고리의 다른 글

strings - 의미 있는 문자열 dump  (0) 2009.11.08
Object file - ELF 파일  (0) 2009.10.23
File - 파일종류 확인  (0) 2009.10.22
커널 분석기 Vi + ctags + cscope  (4) 2009.10.01
Boot loader - LILO와 GRUB  (0) 2009.09.27