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
Código
#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; { if(n<Limite) { Fbuffer[n++]=c; } } Fbuffer[n++]=0; return 0; } int FuncionVulnerable(char *cptr) { char buff[300] = "Datos"; return 0; } int FuncionOculta() { return 0; } int main() { char buffer[1000]; char nombre[] = "archivo.txt"; LeerFichero(buffer,nombre,1000); FuncionVulnerable(buffer); 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.