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개 출력
':: 시스템 보안' 카테고리의 다른 글
Red_Message :: [Python] winreg 모듈을 활용한 레지스트리 정보 조회 (0) | 2016.04.04 |
---|---|
Red_Message :: [Python] py2exe 모듈을 활용한 백도어 (0) | 2016.03.31 |
Red_Message :: gdb를 이용한 버퍼 오버플로우 실습 #3 (1) | 2015.04.23 |
Red_Message :: gdb를 이용한 버퍼 오버플로우 실습 #2 (0) | 2015.04.23 |
Red_Message :: gdb를 이용한 버퍼 오버플로우 실습 #1 (9) | 2015.04.22 |