Tutorium 10

Reading time ~1 minute

Nachbesprechung Übung 8

Aufgabe 1

1.1

  • Stack
    • push
    • pop
  • Call-Stack
    • Stack Frame
      • enter
      • leave

1.2

  • Buffer Overflow
  • Der alte rbp + 8 enthält die Rücksprungadresse der aufrufenden Funktion. Diese als PC wieder herstell.
  • Abhängig von ‘ohne weiteres’. Benötigt einen weitern Funktionsaufruf.

Aufgabe 2

Vorbesprechung Übung 9

Hier ein kleines Programm, dass den ersten CLI-Parameter ausgibt.

; As we link with gcc, main will be handeled like int main(int argc, char* argv[])
; Where rdi holds argc and rsi argv

global main
extern printf           ; the C function, to be called

section .data
fmt     db "%s", 10, 0  ; 10 is newline

section .text
main:
    enter 0, 0
    cmp  rdi, 2         ; check if exactly one argument was given on cli
    jne  .error
    mov  rax, [rsi+8]   ; prepare argv[1]
    mov  rdi, fmt       ; prepare arguments for printf
    mov  rsi, rax
    call printf
    mov  rax, 0
    jmp  .end
.error:
    mov rax, 1          ; return 1 on error
.end:
    leave
    ret