일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- android
- Kotlin
- Flutter
- drift
- data
- CustomScrollView
- textview
- ScrollView
- intent
- Dialog
- binding
- scroll
- Button
- 안드로이드
- appbar
- 앱
- textfield
- tabbar
- activity
- Navigation
- Compose
- 계측
- LifeCycle
- DART
- livedata
- viewmodel
- TEST
- 앱바
- 테스트
- Coroutines
- Today
- Total
Study Record
[리버싱] gdb 사용법 본문
gcc CMD
gcc -o test1 test.c : 컴파일해서 파일이름을 test1 으로 한다.
gcc -S test1.as test.c : 어셈블리어로 컴파일한다.
gcc -g test.c : 바이너리 파일에 표준 디버깅 정보를 포함시킨다.
# gdb a.out
# gdb a.out PID
# gdb a.out core
gdb CMD
☞ gdb 종료
(gdb) <CTRL + D>
(gdb) quit
☞ 소스 코드 확인(gcc -g 옵션을 포함하여 컴파일한 경우)
(gdb) list
(gdb) list 10 # 10번째줄 코드 출력
(gdb) set listsize=20 # 앞으로 소스 코드를 20줄씩 보여줌
☞ disassemble
(gdb) disassemble <주소/함수명>
(gdb) disassemble main
(gdb) disassemble 0x8048123
☞ 프로그램 실행
(gdb) run # (== # /bin/level7)
(gbd) run arg1 arg2 # (== # /bin/level7 arg1 arg2)
(gdb) continue # 다음 브레이크 지점까지 실행, 혹은 실행
☞ 브레이크 포인터 걸기
(gdb) break *0x8049000
(gdb) break func
(gdb) break *main+38
☞ 브레이크 정보 보기
(gdb) info breakpoints
☞ 브레이크 지우기
(gdb) delete # 전체 지우기
(gdb) delete 1 # 1번 지우기
(gdb) clear [ *main+38 | *0x8049000]
☞ 값 보기
- 형식 : x/[출력범위][출력형식] <주소>
x/s <주소> : 문자열 방식으로 출력
x/x <주소> : 16진수로 출력
x/4d <주소> : 주소에서 4개를 10진수로 출력
(gdb) x/x 0xbfffed60
(gdb) x/x $ebp
(gdb) x/32x $sep
(gdb) x/10i *main+16
☞ 레지스터 값 출력
(gdb) info registers # 보통 브레이크를 잡은 상태에서 본다.
(gdb) info all-registers
☞ 현재 디버깅하고 있는 프로그램의 함수 리스트
(gdb) info functions
☞ 함수 내부로 들어가지 않고 한 라인 실행
(gdb) nexti
☞ 함수 내부로 들어가면서 한 라인 실행
(gdb) stepi
☞ 도움말 출력
(gdb) help
(gdb) help info
☞ 스택 추적 - 주로 개발자분들이 많이 사용
(gdb) backtrace
※ <ENTER> : 특별하지 않는 경우에는 다시 실행
☞ 문법 설정하기 (intel vs AT&T)
(gdb) set disassembly-flavor [ att | intel ]
'리버싱 > 기본' 카테고리의 다른 글
[리버싱] Hack Me 리버싱 의사코드 복원 (5,6단계) (0) | 2021.11.15 |
---|---|
[리버싱] netcat(nc) CMD (0) | 2021.11.15 |
[리버싱] 간단한 어셈블리 코드 분석 후 복원 (0) | 2021.11.12 |
[리버싱] 어셈블리어 문법 (0) | 2021.11.12 |
[리버싱] 자주 사용되는 C언어 코드 분석 + 함수 (0) | 2021.11.12 |