Pwnstar

gdb(peda) 명령어 본문

공부/gdb 명령어

gdb(peda) 명령어

포너블처돌이 2020. 7. 21. 23:52

자주 쓰는 gdb(peda) 명령어에 대해서 정리를 좀 해놓으려고 한다. 생각날 때마다 계속 조금씩 추가할 것이다.

 

gdb 바이너리 or gdb 바이너리 core

특정 바이너리나 core 파일을 디버깅할 때의 명령어이다.

 

pd (함수이름 or 주소)

특정 함수의 어셈블리어를 볼 때 사용하는 명령어 함수이름을 써도 되고, 함수의 시작주소를 써도 된다.

ex) pd main

 

x/(출력범위)(출력형식)(출력범위의 단위) (메모리 주소)

ex) x/20wx 0xbffffab0 -> 4바이트씩 20개를 16진수 형태로 보여줌

ex) x/40gx 0xbffffab0 -> 8바이트씩 40개를  16진수 형태로 보여줌

 

si, ni

두 명령어는 현재 행을 수행하고 정지한다는 공통점이 있지만,

si는 call puts와 같은 행이 나왔을 때 입력하면 다음 행으로 넘어가지 않고 call하는 함수로 들어간다.

ni는 call puts와 같은 행이 나왔을 때 call 다음 행으로 넘어간다.

 

c(continue)

브레이크 포인트를 잡고 디버깅할 때 다음 브레이크 포인트까지 넘어간다.

 

finish

현재 함수를 종료하고 넘어감

 

i b(info breakpoint)

현재 설정되어 있는 브레이크 포인트들의 정보를 보여준다.

 

i r(info register)

현재 레지스터의 값을 보여준다.

 

info func

컴파일된 함수들을 출력해준다.

 

checksec

현재 바이너리에 걸려있는 mitigation 정보들을 보여준다.

 

handle SIGALRM nostop

handle SIGALRM noprint

간혹 드림핵의 워게임같은 문제들은 바이너리에 타이머가 걸려있다. 그 시간이 지나면 프로그램이 종료되는데 디버깅할 때에는 시간이 많이 걸릴 수 밖에 없으므로 위 명령어로 alarm이 울려도 프로그램이 멈추지 않게 하거나,멈출때 출력하는 문자열이 나오지 않게 설정할 수 있다.

 

 

Comments