У меня есть задание на домашнее задание с просьбой вызвать функцию без явного вызова ее, используя переполнение буфера. Код в основном такой:Как я могу вызвать переполнение буфера?
#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;
}
Хотя я не уверен, как действовать дальше. Я подумал об изменении адреса возврата для счетчика программ, чтобы он перешел непосредственно к адресу g(), но я не уверен, как получить к нему доступ. Во всяком случае, подсказки будут замечательными.
4 upvotes для домашнего задания! ОП даже не придумал вопрос ... вау, некоторые люди легко впечатлены. – Lazarus
@ Lazarus, я поддержал ваш комментарий. О, о!:-) –
@ Lazarus тот факт, что это вопрос домашней работы, не имеет ничего общего с тем фактом, что я нахожу это интересным. Я также поддержал это, потому что хочу поощрять интересные домашние задания, а не просто «Я закрыл буфер файлов, и теперь, когда я пытаюсь читать из файла, он не работает. Почему?» (Другими словами, я выдвигаю вопросы, на которые я не знаю ответа, но хочу) – Yacoby