gdb-peda 설치 및 사용법!

2018-07-31

요즘 pwnable 문제의 binary를 분석하기위해 gdb를 종종 사용한다. write-up등을 보다보면 gdb가 이쁘길래 어떻게 한 것인가 찾아보다가 gdb-peda를 알게 되었다!

  1. PEDA 개요 PEDA는 Linux환경에서 동작하며 binary분석 및 Exploit을 도와주는 도구이다! PEDA : Python Exploit Development Assistance for GDB의 약자이다.

pwnable.krbof문제를 gdb-peda를 이용하여 실행시켜 보았다! registercode stack등이 실시간으로 보여진다!


  1. 설치
    git clone https://github.com/longld/peda.git ~/peda
    echo "source ~/peda/peda.py" >> ~/.gdbinit
    

설치가 끝났다..!(?)

하지만 가아아아끔 gdbgdb-peda를 구분하여 사용하고싶을 때가 있을것이다! 그럴때를 위해

$ vi ~/.gdbinit
define init-peda
source ~/peda/peda.py # 경로
end
document init-peda
Initializes the PEDA (Python Exploit Development Assistant for GDB) framework
end

vi ~/.gdbinit에 위의 내용을 넣게되면 gdb와 gdb-peda를 구분하여 사용가능하다!


  1. 사용법 기본적으로 명령어는 gdb와 같다. 하지만 몇가지가 추가된다!
  • disas
  • 일반 disas

  • peda disas

보다시피 peda의 disas는 알록달록 색깔이 칠해져 더 예쁘다!

  • String 검색 기능!

peda에서는 find 명령어를 이용하여 String을 검색 가능하다!

위의 사진에서 볼 수 있다! 찾게된 /bin/sh의 주소가 출력된다!

  • checksec 아예 checksec이 내장되어있다! 꿀이다 꿀!
  • 기타사항 공식페이지에 자세한 기능이 있다!
    aslr -- Show/set ASLR setting of GDB
    checksec -- Check for various security options of binary
    dumpargs -- Display arguments passed to a function when stopped at a call instruction
    dumprop -- Dump all ROP gadgets in specific memory range
    elfheader -- Get headers information from debugged ELF file
    elfsymbol -- Get non-debugging symbol information from an ELF file
    lookup -- Search for all addresses/references to addresses which belong to a memory range
    patch -- Patch memory start at an address with string/hexstring/int
    pattern -- Generate, search, or write a cyclic pattern to memory
    procinfo -- Display various info from /proc/pid/
    pshow -- Show various PEDA options and other settings
    pset -- Set various PEDA options and other settings
    readelf -- Get headers information from an ELF file
    ropgadget -- Get common ROP gadgets of binary or library
    ropsearch -- Search for ROP gadgets in memory
    searchmem|find -- Search for a pattern in memory; support regex search
    shellcode -- Generate or download common shellcodes.
    skeleton -- Generate python exploit code template
    vmmap -- Get virtual mapping address ranges of section(s) in debugged process
    xormem -- XOR a memory region with a key