웹 해킹이 밥줄이기 때문에 gdb를 많이 사용할일은 없지만 그래도 항상 리눅스 환경에서는 정말 유용한 디버거라 생각합니다. 오늘은 GDB를 좀 더 이쁘게 꾸미는 방법과 설정을 저장에 대한 이야기를 할까합니다.
GDB 꾸미기(Set Layout)
일단 기본 gdb는 아래와 같은 구성을 가지고 있습니다. 각각 레지스터, 스택 등 명령으로 하나하나 확인해야하기 때문에 작은 프로그램이라면 별 상관 없겠지만 규모가 큰 프로그램이라면 멘붕이 오기 시작합니다.
덕분에 매번 리눅스 리버싱을 할 때 gdb와 함께 다른 디버거를 같이 활용하는 경우가 많았는데, gdb 자체의 레이아웃 설정으로도 많이 커버가 가능할 것 같습니다.
일단 아래와 같이 옵션을 주어 실행하면 창이 분리된 gdb를 만날 수 있습니다.
#> gdb -tui
이제 분리된 위쪽 창에 레지스터 정보와 같이 자주 봐줘야할 내용을 넣어줍니다.
(gdb) layout asm
(gdb) layout regs
확실히 보기가 편해집니다. 계속 명령으로 disassem한 정보를 볼 필요도 없고 레지스터 또한 실시간으로 볼 수 있습니다. 잘 활용하면 gdb도 편리하게 쓸 수 있을 것 같네요.
설정 저장하기(Save Setting)
gdb도 다른 툴과 같이 rc 파일이 존재합니다. 물론 rc로 시작하는 것은 아니고 .gdbinit 이란 파일로 시작 시 자동으로 수행할 명령에 대해 저장할 수 있습니다.
일단 이 파일은 계정 홈 디렉토리(~/.gdbinit) 에 저장되며 이는 다른 rc 파일과 유사합니다. 열어서 아까 나눴던 레이아웃 정보를 넣어보겠습니다.
#> cat /home/hahwul/.gdbinit
set disassembly intel
layout asm
layout regs
이제 다시 gdb를 열어보면 layout asm, layout regs가 적용된 화면을 볼 수 있습니다. 아까 주었던 -tui 옵션도 자동으로 하면 편하니 .bashrc에 alias를 이용해 넣어주면 좋겠지요 : )
alias gdb='gdb -q -tui'