Rufus Τ. F. schrieb:
> D.h. beim Betreten eines Blocks wird der benutzte Bereich des Stacks mit
> einem definierten Bitmuster (0xCD, wenn ich mich recht erinnere)
> initialisiert, und beim Verlassen des Blocks das Vorhandensein dieses
> Bitmusters in den Lücken geprüft.
Ah, ok.
Der Anfang der Funktion sieht bei mir so aus:
1 | push ebp
|
2 | mov ebp, esp
|
3 | sub esp, 104h
|
4 | push ebx
|
5 | push esi
|
6 | push edi
|
7 | lea edi, [ebp+var_104]
|
8 | mov ecx, 41h
|
9 | mov eax, 0CCCCCCCCh
|
10 | rep stosd
|
11 | mov eax, __security_cookie
|
12 | xor eax, ebp
|
13 | mov [ebp+var_4], eax
|
14 | mov [ebp+var_C], 0AAAAh
|
Die letzte Anweisung ist die erste aus meinem C-Code (var1 = 0xaaaa;)
D.h. da werden zu Beginn 260 Bytes auf dem Stack mit 0xcc beschrieben
Wobei dann die Stack-Check Funktion wissen müsste, an welcher Stelle die
Variablen auf dem Stack abgelegt werden, um auch die Lücken zu
überprüfen. Dazu sieht mir diese Funktion aber zu kurz aus.