set dis intel
Intel Disassemblier-Modus
Intel Flavour
i r [register]
info registers
zeigt alle Register an
x/[format] [speicheradresse]
liest ab der übergebenen Speicheradresse und gibt in dem übergebenen Format aus
mögliche Formate sind:
x für Hex
u für Dezimal
t für Binär
i für Assembler
o für Oktal
s für ASCII-Strings
mit $[register] statt der Speicheradresse liest der Befehl ab der Speicheradresse für den Startpunkt des angegebenen Registers
info functions
zeigt alle Funktionen an
sollte aufgerufen werden, bevor man das Programm startet -> ansonsten werden alle Librarys geladen und alle Library-Funktionen angezeigt (unübersichtlich!)
next
springt einen Schritt nach vorne
bt full
zeigt alle Variablen und Aufrufe an
aktueller Callstack
gdb [programm]
startet das übergeben Programm in GDB
mit run kann man das Programm dann laufen lassen
break [stelle]
setzt einen Breakpoint an der übergebenen Stelle
als Stelle können eingesetzt werden:
Funktionsname
Zeilennummer
nexti
wird genutzt, um Maschinenbefehl auszuführen
wenn ein Funktionsaufruf enthalten ist, wird die Funktion ausgeführt und danach wird gestoppt
Pythoncode an Programm übergeben
nützlich, wenn man z.B. bestimmte Strings an Programm übergeben möchte
python -c “pythonbefehl”
wird entweder gepiped oder direkt ausgeführt:
python -c “pythonbefehl” | programm -> wird in den ersten Input des Programms reingelesen
statt Pipe muss man in GDB r <<< $(python -c “pythonbefehl”) benutzen
programm $(python -c “pythonbefehl”) -> wird als Konsolenparameter aufgelöst und übergeben
Python einzelnen Befehl ausführen
python -c “befehl”
mit print können Zeichen geprintet werden
“zeichen” * 50 -> printet 50 mal Zeichen
“\x90” -> printet das angegebene Byte als Maschinencode (in dem Beispiel x90, also NOP)
Input offenhalten und in Progeamm rein pipen
cat <(das was man pipen will) - | programm, in das gepiped wird
Zeichen für stdin
-
Last changed2 years ago