티스토리 뷰

pwnable/정리

gdb 사용법 정리

ba0bab 2018. 1. 6. 22:03




set disassembly-flavor [명령어 형식]

- intel과 at&t가 있음


disas [함수이름]

- 함수의 어셈블리 코드를 보는 명령어


b * [메모리주소]

- breakpoint를 거는 명령어

- 메모리 주소나 함수의 이름 혹은 offset+O으로 걸어도 됌


info b

- breakpoint 정보를 열람 할 수 있는 명령어


d (breakpoint 번호)

- breakpoint를 삭제할 수 있는 명령어


run [매개변수]

- gdb 내부에서 프로그램 실행


ni

- 다음 인스트럭션 실행


메모리 출력 방식

- x/b : 1바이트 출력

- x/h : 2바이트 출력

- x/w : 4바이트 출력


- x/x : 16진수로 출력

- x/u : 10진수로 출력


intel CPU는 바이트를 배열할 때 거꾸로 씀 -> 리틀 엔디언

하지만, gdb는 디버깅 시 보기 편하게 하기 위해 거꾸로 안 씀 -> 빅 엔디언


*참고로 네트워크 상에서는 빅 엔디안 형식을 씀


특정 레지스터를 기준으로 메모리 값을 보고싶으면

- $[레지스터 이름] 으로 출력 가능


info reg 혹은 i r을 레지스터의 정보를 출력하는 명령


'pwnable > 정리' 카테고리의 다른 글

PLT와 GOT  (0) 2018.01.07
Static Link 방식과 Dynamic Link 방식  (0) 2018.01.07
ShellShock bash shell 취약점(CVE-2014-6271)  (0) 2018.01.01
IA32 인텔 CPU 구조, 레지스터  (3) 2017.12.20
쉘코드 모음 정리  (1) 2017.12.14
Comments