GDB 란?
- 어셈블리 언어로 프로그램이 실행되면서 Address를 따라가는 진행하는 상태를 볼 수 있는 것
- i r esp... break main으로 해당 내용을 볼 수 있도록 함, 16, 10, 8 진수로 해당 내용을 봄
- 자주 사용하다 보면 eip를 많이 보는데, EIP 레지스터란 프로그램이 실행되는 동안 메모리 주소에 있는 현재 명령을 가리키는 "포인터" 라고 생각하는 개념
사용법: gdb -q "실행할 파일 경로"
- list : 실행 code를 보여줌
- Run: 프로그램을 실행함
- Break Point(지점 설정): 실행하는 Code의 지정하여 순서에 Break를 걸어 설정함
int main() {
char A(40);
strcpy(A, "tistory good!\n");
printf(A);
}
- break strcpy 로 해당 함수의 코드를 Break 걸수 있음
- break 6 이면 6번이 중지점이 됨
- 중지점으로 EIP의 메모리의 Address를 주목하여 봄
- i r eip로 해당 Address 를 보는 연습해보기
- bt :스택을 되돌아보는데 사용하는 명령어