Zurück zur SP2 Übersicht
auth.dump
Spalte mit Binärcode entfernt, um Platz für Kommentare zu schaffen :)
[...]
08049feb <authenticate>:
8049feb: push %ebp # Alten Frame-Pointer auf den Stack legen
8049fec: mov %esp,%ebp # Framepointer neu setzen
8049fee: sub $0x18,%esp # Stack für fwrite vorbereiten
8049ff1: mov 0x813a430,%eax # stdout -> %eax
8049ff6: push %eax # Und auf den Stack legen
8049ff7: push $0xa # nmemb
8049ff9: push $0x1 # size
8049ffb: push $0x80ea063 # Zeiger auf String
804a000: call 8072ad0 <_IO_fwrite> # Funktionsaufruf fwrite
804a005: add $0x10,%esp # Stack wieder abbauen
804a008: mov 0x813a430,%eax # "stdout" in %eax schreiben
804a00d: sub $0xc,%esp # Stack für fflush vorbereiten
804a010: push %eax # ...und auf den Stack legen
804a011: call 8072830 <_IO_fflush> # Funktionsaufruf fflush
804a016: add $0x10,%esp # Stack wieder abbauen
804a019: sub $0x8,%esp # Stack für Funktionsaufruf vorbereiten
804a01c: lea -0x15(%ebp),%eax # Adresse des Puffers in %eax schreiben
# -> Hier ist bekannt, wo genau der Puffer liegt!
# -> Gibt uns die rel. Position der Rücksprungadresse
804a01f: push %eax # 2. Argument von scanf: %eax (Adresse des Puffers)
804a020: push $0x80ea06e # 1. Argmuent von scanf: Adresse von "stdin"
804a025: call 806b1b0 <__isoc99_scanf> # Funktionsaufruf scanf
804a02a: add $0x10,%esp # Stack wieder abbauen
804a02d: mov %eax,-0xc(%ebp) # n schreiben (Rückgabewert von scanf)
804a030: cmpl $0xffffffff,-0xc(%ebp) # Vergleich mit EOF - und wenn nicht EOF...
804a034: jne 804a03d <authenticate+0x52> # ... zum checkPassword-Aufruf springen
804a036: mov $0xffffffff,%eax # Ansonsten -1 als Rückgabewert setzen
804a03b: jmp 804a04c <authenticate+0x61> # return
804a03d: sub $0xc,%esp # Stack für checkPassword vorbereiten
804a040: lea -0x15(%ebp),%eax # Erstes Argument in %eax laden...
804a043: push %eax # ...und auf den Stack legen
804a044: call 8049f05 <checkPassword> # Funktionsaufruf checkPassword
804a049: add $0x10,%esp # Stack wieder abbauen
# Der Rückgabewert von checkPassword steht in %eax und wird somit auch von authenticate zurückgegeben.
804a04c: leave
804a04d: ret
0804a04e <executeShell>: # Hier wollen wir hin!
[...]