GDB - radare2
Połączenie gdbserver i radare2
Created Jul 18, 2023 - Last updated: Jul 18, 2023
Uruchamiamy debuggowanie aplikacji za pomocą servera gdb:
gdbserver localhost:1337 ./prog
Gdy gdbserver działa w tle uruchamiamy radare2:
r2 -e dbg.exe.path=./prog -d gdb://localhost:1337
Radare2 wczytuje symbole ze wskazanego pliku i łączy się z rzeczywiście uruchomionym procesem debuggowanego programu za pośrednictwem gdbservera.
Następnie standardowe działania w radare2, czyli na początek analiza kodu:
aaa
Od tego momentu polecenie ‘?’ jest przyjacielem :)
Sprawdzamy informacje o pliku, symbolach, zawartości itd:
i
i?
ia
ie
il
iM
is
iSS
izz
Można obejrzeć funkcje:
pdf@sym.main
pdf@sym.test
Można zrobić diagramy reprezentujące strukturę programu:
agCd > /tmp/foo.gv
Taki plik da się na przykład obejrzeć narzędziem xdot:
xdot /tmp/foo.gv
Znając powyższe można ustawiać breakpointy:
db sym.main
db sym.test
Podgląd rejestrów:
dr
drc
drr
dr?rip
Wykonywanie programu:
dcb
dcc
ds
dso
Przejście do trybu wizualnego:
V
Od tego momentu wygląda to trochę inaczej. Program odpowiada na pojedyncze przyciski, na przykład: zmiana widoku, step-in, step i wyjście:
p
V
p
V
V
q
q
p
p
s
S
q
Po oknie podglądu kodu da się wędrować klawiszami ikjl a breakpoint ustawić można za pomocą B.
Gdy znudzą się lub zmęczą kolory można je szybko zmienić za pomocą R.
Można tymczasowo wrócić do trybu komend, jak w vi - dwukropkiem. Enter w pustej linii wraca do trybu wizualnego.
STDOUT debuggowanego procesu jest tam, gdzie jest on uruchomiony pod kontrolą gdbserver.