2015. 4. 21. 14:37 :: 시스템 보안

gdb 다루기

칼리리눅스를 이용하여 어셈블리어 실습을 위한 gdb 실습을 해보겠습니다.

 

1. 실행방법

1) 테스트 프로그램 example.c 작성

두개의 정수를 합쳐수는 함수가 포함된 간단한 프로그램을 작성합니다.

 

2) 옵션을 사용하여 컴파일

stack-protector 를 없애지 않고 컴파일 할 경우 실습하는데 어려움이 있을 수 있습니다.

 

3) gdb 실행

- q : gdb 실행하면서 프린트되는 설명 생략

 

 

2. 어셈블리어 코드 보기

- set disassembly-flavor intel : AT&T 어셈블리어 명령어를 Intel 어셈블리어 명령어로 변경

 

 

3. 브레이크 포인트

1) 브레이크포인트 명령어

- b func

- b *func+5

- b *0x8040000

- info break : 현재 걸려 있는 모든 break 포인트 확인

- delete : 브레이크포인트 모두 지우기

 

     2) 진행명령어

- r : 프로그램을 수행한다.

- kill : 프로그램 종료

- si : 다음 인스트럭션 실행, 만약 함수라면 안으로 진입

- ni : 다음 인스트럭션 실행, 함수 안으로 진입하지 않는다.

- c : 다음 브레이크 포인트로 진행

 

3) main함수에 브레이크 포인트 걸고 실제 확인

 

 

4. 메모리검사

1) 진행명령어

- x/"범위""출력형식""범위의단위" "메모리주소 또는 함수명"

- 출력형식 : x (16진수), s (문자열), I (명령어)

- 범위의단위 : b (1byte), h(2byte), w(4byte), g(8byte)

 

2) 실행예제

ex) x/20wx $esp : esp가 가리키는 메모리부터 높은 주소쪽으로 4byte 씩 20개 출력

 

 

 

 

posted by Red_Message