032
16.11.2005, 13:45 Uhr
Sponge
|
ich führe wie es scheint mittlerweile nur noch ein Selbstgespräch.. naja macht auch nix ... zumindest habe ich relativ brauchbaren Code, mit dem man zumindest unter win32 den StackOverFlow vorhersehen können sollte
Code: |
#include <stdio.h> #include <windows.h>
int fun() { SYSTEM_INFO * info = (SYSTEM_INFO*)calloc(1,sizeof(SYSTEM_INFO)); GetSystemInfo(info); MEMORY_BASIC_INFORMATION * buffer = (MEMORY_BASIC_INFORMATION *)calloc(1,sizeof(MEMORY_BASIC_INFORMATION)); if (VirtualQuery(&buffer-info->dwPageSize,buffer,sizeof(MEMORY_BASIC_INFORMATION))) printf("Flag ist %x (%d - %d)\n",buffer->Protect,buffer->BaseAddress,buffer->AllocationBase); fun(); }
int main (int argc, char * argv[]) { fun (1,2); return 0; }
|
Der Stackoverflow kündigt sich an, wenn buffer->Protect 1 bzw. buffer->AllocationBase 0 wird. Zu diesem Zeitpunkt hat man noch die letzte Seite die man vollschreiben kann (sollte für Errorhandling reichen)
Die Hauptidee geht von Spacelords Beitrag aus -- Es gibt 10 Arten von Leuten: die, die das binäre System verstanden haben, und die, die es nicht verstanden haben ^^ |