Duda BufferOverflow (Extraño error)

Iniciado por lubo, 26 Octubre 2013, 12:21 PM

0 Miembros y 1 Visitante están viendo este tema.

lubo

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/dibujo3-765608.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.