GDB는 일반 어플리케이션 디버거로서도 사용되지만, 특히나 시스템 해킹을 공부하는 사람들이 많이 사용하곤 한다. 자주 사용하는 명령어들을 한번 정리해보겠다.
1. 실행
바이너리 실행 및 디버거 Attach
gdb -q [파일명]
런타임 Attach
gdb -q -p [pid]
2. 메모리 검사(Examine/ x 명령어)
x/[개수][포맷][크기] [주소]
개수에는 숫자가 들어간다
포맷은 다음의 경우가 있다.
1) x - 16진수
2) d - 10진수
3) c - 문자
4) s - 스트링
5) i - 인스트럭션(어셈블리 명령어)
크기는 다음의 경우가 있다.
1) b - 바이트(1byte)
2) h - 하프워드(2byte)
3) w - 워드(4byte)
4) g - 자이언트(8byte)
주소는 다음과 같이 있다.
1) 0xabfdefg - 16진수로 주소값을 직접 사용
2) $eip - 레지스터가 가지고 있는 값의 메모리 주소를 검사. 레지스터 이름 앞에 $를 붙여야 한다.
3. 디버기(debugee) 프로세스의 pid 및 정보 알아내기
(gdb) info inferior
4. 브레이크 포인트 걸기
(gdb) b *0x808080
(gdb) b *main
(gdb) b *main+5
와 같이 다양하게 브레이크 포인트를 걸 수 있다.
5. 브레이크 포인트 걸린 위치 확인
(gdb) info b
6. 프로세스 실행
(gdb) run
혹은
(gdb) r
7. 다음 브레이크 포인트까지 계속 실행
(gdb) continue
줄여서
(gdb) cont
8. 한 인스트럭션만 실행
(gdb) next instruction
(gdb) ni
-----------------
syscall들
https://syscalls.kernelgrok.com/
'해킹 & 보안' 카테고리의 다른 글
[번역] 정보 보안 직종에 종사하고 싶은 사람에게 by Ivan Fratric (2) (0) | 2018.02.23 |
---|---|
[번역] 정보 보안 직종에 종사하고 싶은 사람에게 by Ivan Fratric (1) (0) | 2018.02.22 |
백준저지에서 어셈블리어로 문제 풀기 (0) | 2018.01.28 |
[Lord of SQL Injection] Level 1 Gremlin 풀이 (0) | 2017.09.05 |
[Lord of SQL Injection] 사이트 소개 (4) | 2017.09.05 |