Nachbesprechung Übung 8
Aufgabe 1
1.1
- Stack
- push
- pop
- Call-Stack
- Stack Frame
- enter
- leave
- Stack Frame
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