/* * Corrompe o conteúdo da pilha. */ #include void *retorno_main; int g() { int i, v[2]; printf("Função g. Hehehehe!\n"); v[6] = retorno_main; return 0; } int f() { int i, v[2]; for (i = 0; i < 10; i++) printf("v[%d] = %p\n", i, (void*) v[i]); printf("Endereço de retorno = %p\n", (void*) v[6]); retorno_main = v[6]; v[6] = g; /* Corrompe endereço de retorno? */ return 0; } int main() { printf("Endereço da função main = %p\n", main); f(); printf("Eu voltei...\n"); return 0; }