본문 바로가기
운영체제/Linux

gdb의 플러그인 pwndbg 설치

by eteo 2022. 10. 18.

 

https://github.com/pwndbg/pwndbg

 

GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy

Exploit Development and Reverse Engineering with GDB Made Easy - GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy

github.com

 

 

 

설치는 간단하다.

위 사이트를 git clone 하고 pwndbg 폴더에 들어가 setup.sh 파일을 실행하면 설치가 된다.

 

 

그리고 디버그할 실행파일이 있는 곳으로 이동해서 gdb 명령어를 입력하면 pwndbg 플러그인이 덮힌 gdb가 실행된다.

 

 

이 상태에서 start 명령어를 입력해보자.

  • start : 프로그램 시작점부터 분석할 수 있게 한다.

pwndbg의 화면은 크게 4 부분으로 구성되어 있다.

 

  • [ REGISTERS ] : 레지스터 상태를 보여준다.
  • [ DISASM ] : rip(명령어 포인터 레지스터)부터 디스어셈블된 결과를 보여준다.
  • [ STACK ] : rsp(사용중인 스택을 가르키는 포인터)부터 스택값을 보여준다.
  • [ BACKTRACE ] : 현재 rip에 도달할 때까지 어떤 함수들이 중첨되어 호출되었는지 보여준다.

 

  • x(examine) : 메모리 주소를 관찰

→ 형식 : o(octal), x(hex), d(decimal), u(unsigned decimal), t(binary), f(float), a(address), i(instruction), c(char), s(string), z(hex, zero padded on the left)

→ 사이즈 : b(byte), h(halfword), w(word), g(giant, 8bytes)

 

ex.

rsp부터 word 단위로 40(0x28)바이트를 hex 형식으로 출력

> x/10wx $rsp

rsp부터 8바이트씩 80(0x50)바이트를 hex 형식으로 출력

> x/10gx $rsp

rip부터 10줄의 어셈블리 명령어 출력

> x/10i $rip

특정 주소의 문자열 출력

> x/s 0x4ffffe58

 

  • pd : pwndbg 의 디스어셈블 명령어. 엔터를 치면 이전 명령어가 실행되서 계속 볼 수 있다.

 

  • tele(telescope) : 메모리 덤프 기능. 특정 주소의 메모리 값을 보여주고, 메모리가 참조하는 주소를 재귀적으로 탐색해 보여줌
  • vmmap : 가상 메모리의 레이아웃을 보여줌
  • catch : 특정 이벤트 발생시 중단하도록 catchpoint 설정

ex.

> catch syscall arch_prctl

  • cwatch(contextwatch) : 변수값 보기

 

'운영체제 > Linux' 카테고리의 다른 글

커널 Kernel  (0) 2023.12.17
파일 디스크립터  (0) 2023.09.28
Linux ] cat 명령어, > 리다이렉션  (0) 2022.10.10
Linux ] gcc -O 최적화 옵션 플래그  (0) 2022.10.09
Linux ] gdb 디버거 사용법  (2) 2022.10.09