создавая txt-файл для вызова f2 () без изменения кода, как вводить файл, а не изменять этот код, файл будет иметь адрес f2 (), тогда программа выведет «привет»
Мир»
примечание: мой адрес f2 () 00 40 10 14, и в обратном порядке для переполнения буфера он будет читаться как 14 10 40 00
#include <iostream>
#include <cstdio>
using namespace std;
int i;
unsigned int* p;
void f1() {
int a=10;
char str[4];
cout << "Please enter a string:";
while (!cin.eof()) {
cin.get(str[i]);
i++;
}
printf("address of str is:%x\n",str);
printf("address of a is:%x\n",&a);
cout << "The string you entered is:";
cout << str << endl;
}
void f2()
{
cout << "Hello World!\n";
}
main()
{
printf("The address of function f2:%08x\n",f2);
f1();
}
Вы можете посмотреть пример переполнения буфера
лайк http://blogs.msdn.com/b/roberthorvick/archive/2004/01/16/59460.aspx
Других решений пока нет …