From cca685989a7f988ae8d47e2c9662dbe3305dab9a Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Tue, 20 Nov 2018 15:28:19 +0100 Subject: [PATCH] Removed ossec solutions --- school/os-sec/uebung/02/02_1.md | 54 --------------------------- school/os-sec/uebung/02/02_2.c | 63 -------------------------------- school/os-sec/uebung/02/02_3.md | 39 -------------------- school/os-sec/uebung/02/a.out | Bin 15424 -> 0 bytes 4 files changed, 156 deletions(-) delete mode 100644 school/os-sec/uebung/02/02_1.md delete mode 100644 school/os-sec/uebung/02/02_2.c delete mode 100644 school/os-sec/uebung/02/02_3.md delete mode 100755 school/os-sec/uebung/02/a.out diff --git a/school/os-sec/uebung/02/02_1.md b/school/os-sec/uebung/02/02_1.md deleted file mode 100644 index e95ff0f..0000000 --- a/school/os-sec/uebung/02/02_1.md +++ /dev/null @@ -1,54 +0,0 @@ -# Aufgabe 1 - -1) - * Fragment 1: fastcall, da die parameter durch die register eax, edx und ecx übergeben werden, return value in eax - * Fragment 2: cdecl, da die parameter in right-to-left order auf dem stack liegen, return value in eax, kein stack - cleanup - * Fragment 3: stdcall, parameter in right-to-left order auf dem stack, return value in eax, callee cleanup - -2) - * Fragment 1: EAX = a, edx = b, ecx = c - -Annahme: Angabe der Parameterreihenfolge _nach_ dem call, also im neuen stackframe - * Fragment 2: ebp+0x8 = a, ebp+0x0c = b, ebp+0x10 = c - * Fragment 3: ebp+0x8 = a, ebp+0x0c = b, ebp+0x10 = c - -Annahme: Angabe der Parameterreihenfolge _vor_ dem call, also im alten stackframe - * Fragment 2: esp = a, esp+0x4 = b, esp+0x8 = c - * Fragment 3: esp = a, esp+0x4 = b, esp+0x8 = c - - -3) - * Fragment 1: Caller cleanup bzw da nur 3 Parameter verwendet werden, kein stack cleanup nötig, da alle parameter - über register übergeben werden - * Fragment 2: Caller cleanup - * Fragment 3: Callee cleanup - -4) - Fragment 1: - - ``` - MOV eax, 3 - MOV edx, 2 - MOV ecx, 1 - CALL f - ``` - - Fragement 2: - - ``` - PUSH 1 - PUSH 2 - PUSH 3 - CALL f - ADD ESP, 12 - ``` - - Fragment 3: - - ``` - PUSH 1 - PUSH 2 - PUSH 3 - CALL f - ``` diff --git a/school/os-sec/uebung/02/02_2.c b/school/os-sec/uebung/02/02_2.c deleted file mode 100644 index 4d4d9c5..0000000 --- a/school/os-sec/uebung/02/02_2.c +++ /dev/null @@ -1,63 +0,0 @@ -#include - -/* -PUSH EBP -MOV EBP, ESP -SUB ESP , 4 ; reserve 4 bytes in the stack frame -> local variable int32_t -> i -MOV DWORD PTR [ EBP − 4 ] , 1 ; initialize local variable with 1 - -; EBP+8 : first parameter -> a -; EBP+12 : second parameter -> b - -loop: -CMP DWORD PTR [ EPB+ 8 ] , 99 ; while (a >= 99) -JL SHORT exit -LEA EAX, [ EBP+12 ] ; eax = *b; -DEC DWORD PTR [EAX] ; *b--; -CMP DWORD PTR [ EBP+ 12 ] , 99 ; if (b >= 99) -JL SHORT continue -JMP SHORT exit ; break - -continue: -MOV EDX, [ EBP+8] ; edx = a -LEA EAX, [ EBP − 4] ; eax = *i -ADD DWORD PTR [EAX] , EDX ; *eax += edx -> i += a -INC DWORD PTR [ EBP+8] ; a++; -JMP SHORT loop ; loop - -exit: -MOV EAX, DWORD PTR [ EBP − 4] ; return i -MOV ESP , EBP ; cleanup -POP EBP ; cleanup -RETN - - */ - -int32_t f(int32_t a, int32_t b) { - int32_t i = 1; - b--; - while (a >= 99 && b < 99) { - i += a; - a++; - b--; - } - return i; -} - -/* int32_t f(int32_t a, int32_t b) { */ -/* int32_t i = 1; */ -/* while (a >= 99) { */ -/* b--; */ -/* if (b < 99) { */ -/* i += a; */ -/* a++; */ -/* } else { */ -/* break; */ -/* } */ -/* } */ -/* return i; */ -/* } */ - -int main(void) { - f(1,2); -} diff --git a/school/os-sec/uebung/02/02_3.md b/school/os-sec/uebung/02/02_3.md deleted file mode 100644 index 45f28c1..0000000 --- a/school/os-sec/uebung/02/02_3.md +++ /dev/null @@ -1,39 +0,0 @@ -# Übung 2 Aufgabe 3 - -1. - -| 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 | - -2. - -``` -int32_t f(int32_t a, int32_t b) { - return (a+b)-2; -} -``` - -3. - -4. -Sowohl Caller, also auch Callee räumen den Stack auf. Darüber hinaus diff --git a/school/os-sec/uebung/02/a.out b/school/os-sec/uebung/02/a.out deleted file mode 100755 index 8375184d1c4dfd5e89b181da271cac96a458add6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15424 zcmeHOZ){W76~B&?;(;+C%}NGzys`*|tvr%|(lDf9L&Bdefj|On)s|N$b`lr=iR|Z* zAP`WmE6j})b*Sr?Z6DaGeb_W4_<&Stg}VIdG)1^0+2ipDO1?d zC61$jTwZ^|6k_5VitFKP0JGnWiBMt+{wes$w_ua$XAJVsfY;mxo2-3ZAK4L~A%y1p z{X5|Y`~hNo4r>?u<^A)cEi&Unh}H2}@9KDDRXmo=4x5>j*{po5OaGSbyKz)`=2%Fq zTMK6H>Axd3{51bmaKm?g_}HEJpI*6}D%3qqEc?J1GM9!hpvtmeeCxw=)XQmSnPEU* zTxKtao+z^o=qtb)i^*lNRgk*HwQYx$u_LjhmCZyW!m|2? z!&ZMR8IH#eL}3yMKsaq%iEu0_wsdUUxXEfZ8>h7ObXt*UIyw-`*wJ)P=cafn z8SM%8#u;NEkxG_gSPD8T5S^1Vgqif@$fvH8sMdg|cJve*}hZ>JN)Ip>3% z)N+HeYlBLT!+r=S;1(rL$OI*tnxe!>@dG!933AEJfSUm~18xS~47eF^GvH>x&48N$ zHv|9W40PwleZ~CL_0@|}j{ob=;3NcEHJ zfHr-)_xK078@IZ8b`|+fc(iZ|VMcSotB%t(n!ElU#Lhj==}BOVZ{aYJUs_-2AJd27|o4k3qgy2YvKK9@kyAAI-lwj{4}^!@G}vlpC+z$u3sETNt%hh_S-xnH9i^ z;!kim`u5jQAE@r~7`gGvm6y*?Rva&!zq!nF?Y&96Hvj4rLteG#A`M+TovR3#e{Kpf zRkZ%G+Y7$@IRh2D0X$mx9ey@IoFi|tQzF}t&)rges>zM}ozr{+cfQXe1S&Q{Ud$2c zQ9;pB#{1++IP$gi1v!rDViyoq!-#yTeTwhqH*0eVzbALd-+Qd}qH2+mtAeQaLd6T7;xA>ZzOyJ4?-ufvD$Bc{+|ynB!Cm%!k?gxaAFppH zR-t6{^dyhD2^?2mJb$;sUe@GbaJwD5{&C4C-lQ*g$%E0XyPN$m_m2OWz1DL&J4}25 zt;spG2FRm@)2oml&Kvf^B{u_Z2HXs|8E`Y;X28vWn*lciZU)>8xEc8W$$eb*RK#*!aS&^Gxu)6=IT!LZFxNTr9q@}_ z65p};!U~978_aiKG%pr`$Ka&i1<5tjK`__K^Z)kG9VbN<|E#7A`0)pCiv7iFWvT}D z-y!w;D~kUkI?F~uT>q}Ag`Ea*t@4&lo4#%|U?urVqt$FSn~dhhrq;&RHBA!n;DKxX zNox0iT05_7j#`Mz(|&Xu#Qc%GGNUSg%4SwoUX{)4A~&iU@ce}W=Wp6(rd0kYy#mXz zLCh=3E6)m)(%8K6?4bU%EziE(@1XFU1!^8BJ0NXgDBOxtoLf-K{~i`iRBtt_h) zpE)W+3PPJb7%Ppx0<)g;^h%lC0GrnbiGB`+?J=%L)QL_=UJoP>W~&X!Yl=kt5lB6L z561svI!ZKKf8Ky^@G%AOl=4@OKLbOz$E)N5Y&~y1$lq^a>-OmX0Jc6qJn<8-<%I>| zK|Vj`K&Hn#Pt1iK#Kp(r8uWiLl@b|{EwGOO&uguwV!k*ITb~aDS22J4(&wWZb}ejv zkC19A0-_uCA>@a@RWbf<*dwKUG2TAdnwCR(8Mcnkc>3BR#sHs$pVug9VZ|bG3U;NT z`p110Z^72YZoCisI@;s!T5SIufE+zrblj3K@q+@ z2wU5B32RHoj*X!XYscoz-R(VAPiSLDJEO{tEq$4+?D4QxICFc970INm!EiFdtuyy;&be?(@G9% zEtbT_pCMr;Q+Cu0ZQQoX4iA*9fn?U~&Bm~?Di#qYt-)|+P?(XCB;qM)rqDC< z#KOUp4X9v9pD;1?6PV8WTKab+pJ8yh;(K}Kemq^5KGIjfyt5Lg_q`d=HR;HhwXAr2F?NEFG^p2n=wuOTPL C45&f?