일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- writeup
- NewsClipping
- HackCTF
- PWN
- Shadow 동아리
- webhacking
- 웹해킹
- requests
- CodeEngn
- termux
- ftz
- ctf
- 버퍼오버플로우
- Linux
- RITSEC
- x64dbg
- buffer over flow
- RITSEC CTF 2019
- Next.js
- reversing
- BOF
- Nop Slide
- Python
- 리버싱
- SQL Injection
- 뉴스클리핑
- 리눅스
- Hackerschool
- 어셈블리어
- 보안뉴스
Archives
- Today
- Total
Jaeseo's Information Security Story
GDB(GNU Debuger) 간단 사용법! 본문
GDB(GNU Debuger) 간단 사용법
linux에서 사용되는 Debuger 프로그램.
디버깅을 하기 위해서는 [gcc -g 파일명 -o 출력명] -g 옵션이 사용하는 것이 좋다.
-g 옵션을 사용하면 gdb 과정 중에 소스코드를 살펴보며 디버깅이 가능해진다.
gdb [프로그램명] | gdb [프로그램명] [PID] | gdb -c [코어 덤프명]
명령어 | 해설 |
break | 함수와 행을 기준으로 중단점을 설정한다. ex) break main |
clear | clear [breakPoint번호] , clear [함수명] 등의 형식으로 사용. breakPoint 삭제 |
disable br | 모든 BreakPoint 비활성화 |
enable br | 모든 BreakPoint 활성화 |
condition | condition [breakPoint번호] 매개변수 조건형태로 break를 상세히 컨트롤 가능하다. |
info breakpoint | breakPoint 확인 명령어 breakPoint번호와 breakPoint주소를 출력한다. |
info locals | 현재 위치한 행에서 접근 가능한 지역 변수 확인 |
info variables | 현재 위치한 행에서 접근 가능한 전역 변수 확인 |
run | 프로그램을 처음부터 시작한다. run arg1 arg2 와 같이 인자값을 넘겨줄수 있다. |
next | 다음 소스 코드를 실행한다. 함수 내부로는 진입을 하지 않는다. |
step | 다음 소스 코드를 실행한다. 함수 내부로도 진입을 한다. |
continue | breakpoint를 만날때 까지 실행을 한다. |
finish | 현재 스택 프레임이 끝날 때까지만 계속 수행한다. |
return | return 포인트로 빠져나올때 사용한다. return [값] 형태를 통해 임의로 조정이 가능하다. |
until | 반복문을 빠져 나올때 사용한다. |
kill | 프로그램 종료 |
watch | watch [변수] 형태로 변수에 쓰기가 발생하면 break를 걸고 출력해준다. |
rwatch | watch [변수] 형태로 변수에 읽기가 발생하면 break를 걸고 출력해준다. |
awatch | watch [변수] 형태로 변수에 읽기,쓰기가 발생하면 break를 걸고 출력해준다. |
set disassembly-flavor [형식] | disassembly 형식 선택 att, intel 둘중 선택 |
disassemble | disassemble [함수] 어셈블리어 형태로 보여준다. c 언어는 main, assembly는 __start 부터 분석 |
list | 소스 코드 10줄단위로 출력, list [함수명] 형태로도 사용 가능. |
print [변수명] | 변수의 값 출력, 지역변수를 우선해서 출력 하기 때문에 전역 변수 확인시에는 :: 사용 print '[함수명]'::[변수명] |
print [함수명] | 함수의 주소값 출력 |
print *[변수명] | 포인터 변수의 값 출력 |
print $[레지스터명] | 레지스터 출력 |
print [변수명] = [값] | 변수에 값을 설정 |
display [변수명] | 작동을 하면서 변수 자동 출력 |
undisplay [변수명] | display 기능 해제 |
x/[보고싶은 갯수][진수] [주소] | memory를 보는 기능 ex)x/100x $esp |
아직 지식이 부족해서 이상한 점이나 잘못된 점이 있다면 댓글로 알려주세요!!
'Security Study > Reversing' 카테고리의 다른 글
dnspy - 사용법 (.Net assembly-editor, debugger, decompiler) (0) | 2019.12.23 |
---|---|
리버싱 기초 - 기초 명령어 (0) | 2019.10.14 |
리버싱 기초 - 범용 레지스터 (0) | 2019.10.14 |
Comments