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.