Mam zadanie domowe z prośbą o wywołanie funkcji bez wyraźnie nazywając ją przy użyciu przepełnienie bufora. Kod jest w zasadzie następujący:Jak mogę wywołać przepełnienie bufora?
#include <stdio.h>
#include <stdlib.h>
void g()
{
printf("now inside g()!\n");
}
void f()
{
printf("now inside f()!\n");
// can only modify this section
// cant call g(), maybe use g (pointer to function)
}
int main (int argc, char *argv[])
{
f();
return 0;
}
Chociaż nie jestem pewien, jak postępować. Zastanawiałem się nad zmianą adresu zwrotnego dla licznika programu, aby przejść bezpośrednio do adresu g(), ale nie jestem pewien, jak uzyskać do niego dostęp. W każdym razie wskazówki będą świetne.
4 upvotes na pytanie domowej! PO nawet nie wymyślił pytania ... wow, niektórzy ludzie są pod wrażeniem. – Lazarus
@Lazarus, uaktualniłem twój komentarz. O o!:-) –
@Lazarus fakt, że jest to zadanie domowe, nie ma nic wspólnego z tym, że uważam to za interesujące. Ulepszyłem także to podejście, ponieważ chcę zachęcić do ciekawszych zadań domowych zamiast prostego "Zamknąłem bufor pliku, a teraz, gdy próbuję czytać z pliku, to nie działa. Dlaczego?" (Innymi słowy, podniosłem pytania, na które nie znam odpowiedzi, ale chcę) – Yacoby