BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
GDB(GNU Debugger)를 이용한 런타임 분석
동적 분석은 프로그램을 실제로 실행시키면서 내부 상태 변화를 보는 방식이다. 소스 코드가 없어도 동작 원리를 파악할 수 있어서, 리버싱에서는 거의 필수에 가깝다. 여기서는 GDB에서 가장 자주 쓰는 핵심 명령만 추려서 본다.
1. Breakpoint(중단점)
break *0x401000(b): 특정 주소에 중단점을 건다. 해당 지점에 도달하면 실행이 멈춘다.delete: 걸어둔 중단점을 지운다.
2. Stepping(단계별 실행)
어셈블리 분석에서는 소스 코드 줄이 아니라, 기계어 명령어 단위로 움직여야 한다.
ni(Next Instruction): 명령어 한 줄을 실행한다.call이 있어도 내부로 들어가지 않는다.si(Step Instruction): 명령어 한 줄을 실행하되,call안으로 들어간다.
3. Examine(메모리 검사)
x 명령어는 메모리 내용을 직접 확인할 때 쓴다.
x/i $rip: 지금 실행 대기 중인 명령어를 본다.x/s 0x402000: 해당 주소를 문자열로 본다.x/10gx $rsp: 스택을 8바이트 단위로 10개 출력한다. 리턴 주소나 스택 프레임 확인에 유용하다.
4. Info(정보 확인)
info registers(i r): 전체 레지스터 값을 본다. 연산 결과와 플래그 상태를 확인할 때 기본이다.
Advanced: GDB 플러그인 활용
기본 GDB 화면은 다소 불친절하다. 그래서 실무에서는 Pwndbg, GEF, Peda 같은 플러그인을 많이 쓴다. 레지스터, 스택, 코드 상태를 한 화면에 보기 좋게 묶어줘서 분석 속도가 훨씬 빨라진다.

