2019. 11. 17. 16:22ㆍlayer7
gdb는 linux에서 사용되는 디버깅 툴 입니다.
linux에서 이 툴을 이용해서 디버깅을 좀 더 수월하게 진행할 수 있습니다.
01. gdb를 사용합시다.
가장 일반적으로 사용됩니다.
1, 2번을 간단히 설명하자면
1번 사용법은 gdb를 사용하여 프로그램을 실행시켜
디버깅하는 방법으로 윈도우 디버깅을 사용하는 방법과 유사합니다.
2번 사용법은 프로그램이 비정상 종료할 때 코어 파일을 만들게 설정한 경우, 해당 코어
파일을 확인하여 종료된 원인을 파악할 때 사용하는 방법입니다.
참고로, 코어 파일을 만들도록 했는지 확인하는 방법과 설정 방법은 다음과 같습니다.
02. gdb 명령어
여기서는 비교적 자주 사용하는 명령어만 기술하도록 하겠습니다.
run(r)
: 프로그램을 시작합니다. 이때, 인자값(argument)을 포합 할 수도 있습니다.
또한, '<', '>', '<<', '>>'와 같은 입출력 방향 재지정 기호는 물론 쉘의 사용까지도
확장 사용할 수 있습니다.
quit(q)
: 프로그램을 종료합니다.
break(b)
: 중단점을 설정합니다.
b <function>/file:funtion/ file:line number/ *memory address
info
: 각종 정볼르 디스플레이 합니다. 더욱 자세한 정보는 help를 통해 학인 할 수 있습니다.
condition
: 브레이크 포인트에 조건을 설정합니다.
enable/disable
gdb -q 혹은 --quiet 옵션을 주면 gdb를 시작할 때 버전 정보 등을 출력하지 않도록 한다.
특정 메모리에 원하는 값 넣기
Set {타입}[주소 or 레지스터] = [값] 형식으로 작성되며, 예는 다음과 같습니다.
ex. Set {int}0x8040000=123
Set {int}$edx=123
메모리 상태 검사
x/[범위][출력 형식][범위의 단위] 형식으로 메모리의 특정 범위를 검사할 수 있습니다.
이때 , [범위]의 기본 단위는 word로 4바이트 입니다.
b(1바이트), h(2바이트), w(4바이트), g(8바이트)의 단위로 지정할 수 있습니다.
출력형식: x(16진수), s(문자열), I(명령어)
Ex)
낮은 주소 쪽으로 메모리를 보려면
x/10wx $esp-0x40와 같이 하면 된다.
backtrace (bt)
프로그램의 스텍을 보여줍니다.
'layer7' 카테고리의 다른 글
layer 26 과제 -[pwnable.kr] passcode write up- (0) | 2019.11.20 |
---|---|
layer 25 리눅스 시스템 프로그래밍 - 컴파일 &라이브러리 생성 (0) | 2019.11.17 |
팀프로젝트 보고앉아 (0) | 2019.07.15 |
Layer 7 12과제 -Git 보고서- (0) | 2019.06.12 |
Layer7 10 과제 -리눅스 보고서- (0) | 2019.05.26 |