Esta es probablemente una pregunta muy básica. He leído sobre canarios y cómo funcionan en teoría. Tiene una variable global que establece en un número aleatorio en el prólogo de una función, hace su función y luego verifica su autenticidad en el epílogo.
void foobar(int a, int b)
{
prolog();
int c = a;
int d = b;
char *buffer[40];
strcpy(stupidcopy);
epilog();
}
Lo que no entiendo es, ¿cómo coloco algo en la pila en el prólogo? Al igual que si llamo a prólogo y le digo que guarde una variable local, estará en la pila, pero cuando salgamos de prólogo (), ¿no se abrirá? ¿Cómo puedo guardar el canario en la pila? ¿Necesito modificar esp usando el código de ensamblaje para hacer esto?