Dork's port

gdb 실행 기본 명령어 본문

Reverse Engineering

gdb 실행 기본 명령어

Dork94 2017. 10. 23. 11:45

리눅스에서 프로그래밍을 하다보면, 또는 시스템 해킹 실습을 위해 gdb를 사용해야 할 경우가 있다. gdb의 기본 명령어에 대해서 알아 보도록 하자.

 

우선 컴파일시에 옵션(-g)을 주어 gdb에서 debugging가능 하도록 해야 한다.

 

# gcc -o object -g source.c 

 

그 후 gdb로 디버깅 하기 위해 아래와 같이 실행 하면 된다.

 

# gdb object

 

위와 같이 실행하면 object를 debugging mode로 실행 하게 된다. 기본 명령어에 대해 알아보자.

 

 

현재 위의 명령어 까지 실행 된 상태에서는 gdb로 동작 대기중인상태 (프로그램이 실행되지 않은 상태)이다. 아래의 명령어(run)로 프로그램을 실행 시킬 수 있다. 

 

r (argument1) (argument2)

 

 

아래의 명령어(break)를 이용하면, break point를 설정 할 수 있다. 메모리 주소 대신 *main+24 등과 같은 주소도 설정 가능 하다.

 

b *0x메모리주소

 

아래의 명령어(countinue)로 break point에서 멈춘 프로세스를 다시 진행할 수 있다.

 

c

 

 

아래의 명령어(next)는 다음 행을 실행(step over) 할 수 있는 명령어 이다.

 

n

 

 

아래의 명령어(step)또한, 다음 행을 실행(step into) 할 수 있는 명령어 이다.

s

 

레지스터의 정보를 볼 수 있으며 뒤에 레지스터 명을 적어주면 해당 레지스터를 볼 수 있다.

 

info reg ($register)

 

 

esp에서부터($esp) 16진수로(x) 20바이트(20)만큼 (w 워드 b 바이트 i 명령 행)으로 출력할 수 있다.

 

x/20(w,b,i) $esp 또는, 메모리 주소

 

 

아래의 명령어(quit)으로 gdb 프로세스를 종료 할 수 있다.

 

q q

 

Comments