gdb 사용법
entry
- 진입점에 중단점 설정한 후 실행함
> DISASM 영역의 화살표가 가리키는 주소 = 현재 rip 값 = 0x401050 -> 진입점 주소와 일치
context
- 4개 영역으로 구분되는 프로그램 상태를 보여주는 명령어
> registers: 레지스터 상태
disasm: rip부터 디스어셈블된 결과
stack: rsp부터 스택의 값
backtrace: 현재 rip 도달할때까지 어떤 함수들이 중첩되어 호출됐는지
break & continue / run
> break: 특정 주소에 bp 설정
continue: 중된 프로그램 계속 실행
> run: 단순히 실행
disassembly
> 함수 이름을 인자로 전달하면 해당 함수가 반환될 때까지 디스어셈블 결과 보여줌
-ni, -si, finish
> ni: printf 함수 다음으로 rip가 이동 = 명령어 실행, 함수 내부 x
si: printf 함수 내부로 rip가 이동 = 명령어 실행, 함수 내부 o
finish
- 함수 끝까지 실행
examine / telescope
- 메모리 조회
- 강력한 메모리 덤프 기능
> x: 특정 주소에서 데이터를 원하는 길이만큼 원하는 형식으로 인코딩
> t: 메모리 조회, 메모리값이 포인터일 경우 재귀적으로 따라가며 모든 메모리값 출력
vmmap
- 가상 메모리 레이아웃 출력
> 어떤 파일로 매핑 된 영역일 경우 해당 파일의 경로까지 보여줌