이번에는 gdb를 통해서 각종 정보를 확인 하는 방법을 알아보자
(gdb) info register
(gdb) run Starting program: /home/choi/bash Breakpoint 1, 0x0000555555583db0 in main () (gdb) info registers rax 0x555555583db0 93824992427440 rbx 0x0 0 rcx 0x555555623420 93824993080352 rdx 0x7fffffffe4d8 140737488348376 rsi 0x7fffffffe4c8 140737488348360 rdi 0x1 1 rbp 0x555555623420 0x555555623420 <__libc_csu_init> rsp 0x7fffffffe3e8 0x7fffffffe3e8 r8 0x7ffff79a2d80 140737347464576 r9 0x7ffff79a2d80 140737347464576 r10 0x2 2 r11 0x3 3 r12 0x555555585520 93824992433440 r13 0x7fffffffe4c0 140737488348352 r14 0x0 0 r15 0x0 0 rip 0x555555583db0 0x555555583db0 <main> eflags 0x246 [ PF ZF IF ] cs 0x33 51 ss 0x2b 43 ds 0x0 0 es 0x0 0 fs 0x0 0 gs 0x0 0 (gdb) |
현재 함수를 호출한 함수와 호출시 전달된 인자에 대한 정보를 담고 있는 스택 트레이스도 출력할수 있다. 스택 트레이스를 확인하면 함수 호출 내역을 끝까지 역추적할 수 있다.
(gdb) info stack
(gdb) info stack #0 0x0000555555583db0 in main () |
(gdb) x/5x $rip
gdb에서 가장 쓰임이 많은 명령어 x를 사용했다. x는 메모리값을 출력하는 명령으로 메모리, 지역 변수, 기타 실행 파일의 저장된 다양한 정보를 보여줍니다.
/5x라는 인자를 사용했는데 그 의미는 5개의 주소 값을 0x로 표현되는 16진수로 출력하는 명령어 입니다.
(gdb) x/5x $rip 0x555555583db0 <main>: 0x56415741 0x54415541 0x81485355 0x000128ec 0x555555583dc0 <main+16>: 0x247c8900 (gdb) x/5x $rsp 0x7fffffffe3e8: 0xf75d7b97 0x00007fff 0x00000001 0x00000000 0x7fffffffe3f8: 0xffffe4c8 |
'리눅스 시스템 운영 ' 카테고리의 다른 글
리눅스 디렉토리 구조 (0) | 2018.07.29 |
---|---|
리눅스 배포판 세계지도 (0) | 2018.07.25 |
(리버싱) 바이너리 디버깅을 통한 동적 분석(1) -GDB (0) | 2018.07.14 |
Objdump를 이용한 디스어셈블링 (0) | 2018.07.10 |
메타스플로잇으로 취약점 점검하기 (0) | 2018.07.09 |