GDB는 일반 어플리케이션 디버거로서도 사용되지만, 특히나 시스템 해킹을 공부하는 사람들이 많이 사용하곤 한다. 자주 사용하는 명령어들을 한번 정리해보겠다.


1. 실행

바이너리 실행 및 디버거 Attach

gdb -q [파일명]


런타임 Attach

gdb -q -p [pid]


2. 메모리 검사(Examine/ x 명령어)


x/[개수][포맷][크기] [주소]


개수에는 숫자가 들어간다


포맷은 다음의 경우가 있다.

1) x - 16진수

2) d - 10진수

3) c - 문자

4) s - 스트링

5) i - 인스트럭션(어셈블리 명령어)


크기는 다음의 경우가 있다.

1) b - 바이트(1byte)

2) h - 하프워드(2byte)

3) w - 워드(4byte)

4) g - 자이언트(8byte)


주소는 다음과 같이 있다.

1) 0xabfdefg - 16진수로 주소값을 직접 사용

2) $eip - 레지스터가 가지고 있는 값의 메모리 주소를 검사. 레지스터 이름 앞에 $를 붙여야 한다.



3. 디버기(debugee) 프로세스의 pid 및 정보 알아내기

(gdb) info inferior


4. 브레이크 포인트 걸기


(gdb) b *0x808080 
(gdb) b *main 
(gdb) b *main+5


와 같이 다양하게 브레이크 포인트를 걸 수 있다.


5. 브레이크 포인트 걸린 위치 확인


(gdb) info b


6. 프로세스 실행

(gdb) run

혹은

(gdb) r


7. 다음 브레이크 포인트까지 계속 실행

(gdb) continue

줄여서

(gdb) cont


8. 한 인스트럭션만 실행

(gdb) next instruction

(gdb) ni


-----------------

syscall들

https://syscalls.kernelgrok.com/



+ Recent posts