Multi-platform Un*x debugger (originally for VAX and M68K)
Open Source from Day 1* (RMS was a large committer)
Pure C + Bison
VimEmacs became quick the reference dev combination
GDB got massive improvements from FOSS community
“ In other words, go ahead and share GDB, don't try to stop anyone else from sharing it farther. Help stamp out software hoarding! ”
1993 - 2003
Grew big, v.4.x(~1.3MB) v.6.x(>13MB)
THE debugger for Un*x, BSD, etc.
2004 - 2008
Mostly bug fixes, new architectures added, more comments/docs, better code structure
Desperation, anguish submerged devs
Best tool for exploit dev (~2008)
Big GDB script with dirty procedures and hardcoded values
First series of patches to export GDB API to Python
GDB 7.0 with Python scripting released
Awesome article by 0verclock: “GDB, meet Python”
Complete docs on Sourceware
GDB Enhanced Features
i.e. GDB on steroid for debugging, reversing, exploiting
Started as a collection of files with GDB Python commands
Then merged into one consistent, extensible tool
Some of the features
... live for some
... just images & videos for other
Displaying a comprehensive context
Derefencing automatically pointers (WinDBG poi style)
Get precise info on memory mapping.
Get generic info on the binary.
Automatically detect vulnerable format strings
Interact with IDA Pro Disassembler.
Easily search patterns in all memory sections
Perfect integration with
gdb remote debugging functionality
Perfect for debugging native Android apps!
Want to redirect a file descriptor to a file ?
Or want to change permissions of a page ?
GEF has NO mantory dependency
Works out of the box on any GDB compiled with Python2 / Python3
... but can integrate other Python libraries for...
Dumping ROP gadgets and generating ROP chains (ROPChain, Ropper)
Emulating instructions from the current to predict the behaviour (Unicorn-Engine)
(... yes it is an emulator embedded with gdb)
Lookup online for known shellcode (@ShellStorm DB)
... Or write your own directly in memory (Keystone)
~50 commands already implemented
All working on ANY architecture (X86, ARM, MIPS, etc.)
Python API for GDB is awesome
Let's do more of it
Ultimate goal: reach the awesomeness of WinDBG
They (didn’t) talk about GEF :
IRC: Freenode ##gef