본문 바로가기

Reversing

06. gdb 명령어 정리

01. 정보보기


- info [명령어] : 명령어에 대한 정보를 보여준다

 ex) info functions -> 현재 실행 파일의 함수들을 보여줌

      info break -> 현재 설치된 브레이크 포인트를 보여줌

- p [변수명] : 해당 변수의 value를 출력

- p $[레지스터명] : 레지스터에 들어있는 값 출력

- p /[출력형식][변수명] : 출력형식에 맞게 변수값 출력

 - 출력형식

  - t : 2진수

  - o : 8진수

  - d : 부호없는 10진수

  - u : 부호없는 10진수

  - x : 16진수

  - c : 최초 1바이트 값을 문자형으로 출력

  - f : 부동소수점

  - a : 가장가까운 심볼의 오프셋 출력


02. 소스보기


- l or list

- list : main 함수를 기준으로 소스를 출력한다

- list [정수] : 정수행을 기준으로 출력한다. ex) list 10 -> 10행을 기준으로 출력

- list 함수명 : 함수명의 소스를 출력한다. (c++의 클래스 멤버일 경우 클래스 이름도 입력해야 한다.)

- list - : 현재 출력된 행의 이전행 출력

- list 파일명.c : 함수명 : 파일명의 함수명 부분을 출력한다.


03. 브레이크 포인트


- break 함수명 : 함수명에 브레이크 포인트 설치

- break [정수] : 정수행에 브레이크 포인트 설치

- break 파일명.c: 함수명 : 파일명의 함수명 부분에 브레이크 포인트 설치

- break + or - [정수] : 현재행에서 정수만큼 + 혹은 - 한 곳에 브레이크 포인트 설치

- break *주소값 : 주소값에 브레이크 포인트 설치

- break [정수] if var == 0 : 정수행에 브레이크 포인트를 설치하는데 var 값이 0일 때 작동한다.


- tb : break 와 동일, 하지만 1회용 브레이크 포인트

- info break -> d [break 번호] : 브레이크 포인트 해제



04. 진행 명령어


- r(run) : 프래그램 실행

- k(kill) : 프로그램 종료

- s(step) : 하나의 행 수행 후 정지, 함수 호출 시 함수 안으로 들어간다.

  - s 5 : s를 다섯번 수행

- n : 하나의 행 수행 후 정지, 함수 호출 시 무시하고 다음 행으로 넘어간다.

  - n 5 : n을 다섯번 수행

- c(continue) : 다음 브레이크 포인트까지 진행한다.(없을경우 r과 동일)


- u : 현재 루프 빠져나감

- finish : 현재 함수 수행 후 빠져 나감

- return : 현재 함수 수행하지않고 빠져나감

- return 123 : return과 동일, 하지만 리턴 값 지정

- si : 어셈블리 명령어 단위 수행, s와 동일하게 하나 행 수행 후 정지하지만 어셈블리 명령어 단위에서 한다.

- ni : 위와 마찬가지, n과 동일하게 하나 행 수행 후 정지하지만 어셈블리 명령어 단위에서 수행


05. 스택 상태 검사


- info f [프레임 번호] : 스택 프레임 내용 출력

- info args : 함수 호출시 인자를 출력

- info locals : 함수의 지역변수 출력

- info catch : 함수 예외 핸들러 출력

- bt : 전체 스택 프레임 출력

- frame [스택번호] : 스택번호 스택 프레임으로 이동

- up : 상위 스택프레임으로 이동

- up [숫자] : 숫자만큼 상위 스택프레임으로 이동

- down : 하위 스택프레임으로 이동

- down [숫자] : 숫자만큼 하위 스택프레임으로 이동


06. 메모리 상태 검사


- x/[범위][출력형식][범위의단위][메모리주소나 함수명]

 - 범위 : 기본 4바이트

  - 출력형식

    - t : 2진수

    - o : 8진수

    - d : 부호없는 10진수

    - u : 부호없는 10진수

    - x : 16진수

    - c : 최초 1바이트 문자형 출력

    - f : 부동소수점

    - a : 가장 가까운 심볼 오프셋 출력

    - s : 문자열 출력

    - i : 어셈블리 형식 출력

  - 범위의 단위

    - b : 1바이트

    - h : 2바이트

    - w : 4바이트

    - g : 8바이트


etc..

jump *주소 : 주소로 점프

disas [함수명] : 함수를 어셈블리 코드로 출력

반응형

'Reversing' 카테고리의 다른 글

08. angr  (0) 2017.11.01
07. arm 어셈블리어 정리  (0) 2017.10.27
05. 스택, 스택프레임  (0) 2017.08.04
04. 함수 호출 규약  (0) 2017.08.02
03. 패킹 & 언패킹  (0) 2017.05.26