Show Menu
Cheatography

Hacking Cheat Sheet (DRAFT) by

A Hacking Cheatsheet.

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Debugging & Co.

objdump
objdump
Programm, um versch­iedene Informationen
über Objekt­-Da­teien anzuzeigen
(auch Assemb­ler­code).
 
-D <da­tei>
 
-M <Sy­nta­x-T­yp>
Intel oder AT&T Syntax verwenden
GDB
gdb -q <Pfad zu Datei>
Führt GNU-De­bugger aus
set args <ar­gum­ent­s>
Übergibt Argumente an das auszuf­ührende Programm.
list
Quellcode anzeigen.
disass­emble <fu­nkt­ion>
Disass­emb­lierung einer Funktion.
GDB ausführen
run
Programm in GDB starten.
kill
Killt das laufende Programm.
quit
GDB beenden.
Breakp­oints
break <ze­ile>
Stoppt bei Erreichen der genannten Zeile.
break <fu­nkt­ion>
Stoppt beim Erreichen der Funktion.
(nur C)
break <da­tei­:ze­ile>
Stoppt bei Zeile in spezif­ischer Datei.
delete <br­eak­point #>
Entfernt einen Breakp­oint.
clear
Entfernt alle Breakp­oints.
enable <br­eak­point #>
Aktiviert deakti­vierten Breakp­oint.
disable <br­eak­point #>
Deakti­viert aktivieren Breakp­oint.
Watchp­oints
watch <ze­ile>
Setze neuen Watchpoint bei Erreichen der genannten Zeile.
watch <fu­nkt­ion>
Setze neuen Watchpoint bei Erreichen der genannten Funktion.
watch <da­tei­:ze­ile>
Setze neuen Watchpoint bei Erreichen der genannten Zeile in spezif­ischer Datei.
Stepping
continue
Weiter­laufen lassen bis zum nächsten
Unterbruch.
next
Nur eine einzelne Zeile ausführen,
in der aktuellen Ebene bleiben.
step
Führt die nächste Linie aus,
springt aber in aufger­ufene Funkti­onen.
finish
Beendet die Funktion und kehrt zum Aufrufer zurück.
Examine
Untersuchung des Speichers
x/<­n><­f><­u> addr
x: examine

n
: Wieder­hol­ungen,
f
: Anzeigeformat,
u
: Einhei­tgröße (
nfu
optional)
addr: Adresse
<f>

o
x
u
t

Oktale Darstellung
Hexa. Darstellung
Vorzeichenlose Darstellung
Binäre Darste­llung
<u>

b
h
w
g

Einzelnes Byte
Halbwort (2 Byte)
Wort (4 Byte)
Giant (8 Byte)
Inform­ationen anzeigen
info registers
Zeige Register bei aktuellem Breakp­oint.
info register <re­gis­ter>

kurz:
i r <re­gis­ter>
Zeige Info zu spez. Register.
info args
Zeige Argumente der Funktion bei aktuellem Breakp­oint.
info breakp­oints
Zeige Infos über Break- und Watchp­oints.
info threads
Zeige alle Threads an.
Einste­llungen in GDB
set dis intel
Disass­emb­ler­-Syntax auf intel ändern.
echo "set dis intel" > ~/.gdbinit
Speichere obige Einste­llung dauerhaft.
 

Assembler

Allgemeine Register
Register sind für den Prozessor wie interne Variablen.
Der Prozessor unters­cheidet zwischen versch­iedenen Arten von Registern.
eax
/
rax
Akkumulator-Register
Allgemein verwen­dbar, spezielle Bedeutung bei Arithm­eti­kfe­hlern.
ecx
/
rcx
Zähler-Register
Allgemein verwen­dbar, spezielle Bedeutung bei Schleifen.
edx
/
rdx
Daten-Register
Allgemein verwen­dbar.
ebx
/
rbx
Basis-Register
Allgemein verwen­dbar.
esp
/
rsp
Stack Pointer
ebp
/
rbp
Base Pointer
esi
/
rsi
Source Index
Quelle für String­ope­rat­ionen.
edi
/
rdi
Destin­ation Index
Ziel für String­ope­rat­ionen.
Segmen­tre­gister
cs
Codese­gment
ds
Datens­egment
ss
Stacks­egment
es
beliebiges Segment
fs
beliebiges Segment
gs
beliebiges Segment
Sonstige Register
eip
/
rip
Instru­ction Pointer
zeigt auf aktuelle Instru­ktion, die der Prozessor gerade verarb­eitet.
ef
/
RFLAGS
EFLAGS
Wird für Vergleiche und Speich­ers­egm­ent­ierung verwendet.
Assembler Sprache
in Intel-­Syntax
operation <zi­el>, <qu­ell­e>
Format der Intel-­Syntax
Data Movement Instru­ktionen
mov
bewegt Wert von Quelle ans Ziel.
push
setzt seinen Operanden oben auf den hardwa­reg­est­ützten Stack im Speicher.
pop
entfernt das 4-Byte­-Da­ten­element vom oberen Rand des hardwa­reg­est­ützten Stacks in den angege­benen Operanden.
lea
setzt die durch seinen zweiten Operanden angegebene Adresse in das Register des ersten Operanden.
Arithe­mtische und Logische Instru­ktionen
add
addiert seine beiden Operanden zusammen und speichert das Ergebnis in seinem ersten Operanden.
sub
siehe
add
, nur mit Subtra­ktion.
inc
inkrem­entiert den Inhalt seines Operanden um eins.
dec
dekrem­entiert den Inhalt seines Operanden um eins.
imul
Integer Multip­lik­ation
idiv
Integer Division
and, or, xor
Bitweise logisches UND, ODER & EXKLUSIVES ODER
not
Bitweise logisches NOT
neg
Negieren
shl, shr
Bitshift nach links, Bitshift nach rechts.
Kontro­llf­lus­s-I­nst­ruk­tionen
jmp
Sprung zu anderem Teil des Codes.
j[kond­ition]
Kondit­ion­eller Sprung
Konditionen:
je, jne, jz, jg, jge, jl, jle
cmp
Vergleich von Werten
call, ret
Diese Anweis­ungen implem­ent­ieren einen Unterp­rog­ram­maufruf und -rückgabe.