Milan Stephan
Fotografie & IT

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!

[...]