notes/school/os-sec/uebung/02/02_3.md
Valentin Brandl d5d225e53f
All checks were successful
the build was successful
Add ossec solution
2018-11-12 14:40:59 +01:00

2.0 KiB

Übung 2 Aufgabe 3

Instruction Kommentar
push eax speichere wert aus eax auf dem stack
push ecx 2. Parameter wird auf Stack gepusht
push edx 1. Parameter wird auf Stack gepusht
call CAFEBABEh Subrotine an Adresse 0xCAFEBABE wird aufgerufen
add esp, 12 Zuvor gepushte parameter werden aufgeräumt
Instruction Kommentar
push ebp Wert von ebp wird auf Stack gespeichert
mov ebp, esp ebp Zeigt auf aktuellen stack pointer
sub esp, 4 lokalen stackframe von 4 bytes reservieren
mov ecx, [ebp+8] schreibe parameter 1 nach ecx
add ecx, [ebp+12] addiere parameter 2 auf ecx (param1+param2)
mov [ebp-4], ecx schreibe wert aus eax in lokalen stackframe; int x = (param1+param2)
dec dword ptr[ebp-4] subtrahiere 1 von wert in lokalem stackframe; x--
dec dword ptr[ebp-4] subtrahiere 1 von wert in lokalem stackframe; x--
mov eax, [ebp-4] schreibe wert aus lokalem stackframe nach eax; return x
mov esp, ebp stelle alten stackpointer wieder her
pop ebp stelle alten basepointer wieder her
ret 8 springe zurück zum aufrufenden punkt und räume den stack auf
int32_t f(int32_t a, int32_t b) {
	return (a+b)-2;
}

Sowohl Caller, also auch Callee räumen den Stack auf. Darüber hinaus