Buenos días.
La duda que tengo no es relativa a los BoF, sinó más bien a un suceso extraño que ha sucedido.
Yo en mi máquina virtual WinXP abro MCV++ Express 2005, y compilo el programa vulnerable.cpp
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
using namespace std;
int LeerFichero(char *Fbuffer, char *Fnombre, int Limite)
{
int c;
int n=0;
FILE *f;
f=fopen(Fnombre,"r");
while ((c=getc(f))!=EOF)
{
if(n<Limite)
{
Fbuffer[n++]=c;
}
}
Fbuffer[n++]=0;
fclose(f);
return 0;
}
int FuncionVulnerable(char *cptr)
{
char buff[300] = "Datos";
strcpy(buff,cptr);
printf("%s\n\n",buff);
return 0;
}
int FuncionOculta()
{
printf("Este texto nunca deberia de haberse mostrado");
return 0;
}
int main()
{
char buffer[1000];
char nombre[] = "archivo.txt";
LeerFichero(buffer,nombre,1000);
FuncionVulnerable(buffer);
system("pause");
return 0;
}
Compila sin problemas (desde consola, pero si compilo desde el IDE me aparece el error de abajo en negrita). El caso es que cuando voy a analizar vulnerable.exe con OllyDbg me aparece esto (fijaos en el LastError):
http://www.subeimagenes.com/img/dibujo2-765605.html (http://www.subeimagenes.com/img/dibujo2-765605.html)
http://www.subeimagenes.com/img/dibujo3-765608.html (http://www.subeimagenes.com/img/dibujo3-765608.html)
http://www.subeimagenes.com/img/dibujo1-765609.html (http://www.subeimagenes.com/img/dibujo1-765609.html)
He probado a compilarlo con Win8 no virtual y pasa lo mismo.
Creo que el problema está en:
Error 1 error LNK2019: símbolo externo _main sin resolver al que se hace referencia en la función ___tmainCRTStartup MSVCRTD.lib(crtexe.obj)
Pero lo he googleado y no consigo solucionarlo.
No sé, a mí antes no me pasaba esto... ¿qué puede estar sucediendo?
Gracias de antemano.