Verán, estaba siguiendo el tutorial de Rojodos sobre buffer overflow (http://www.todopsp.com/foros/showthread.php?t=23953 , hay que darle a "Premum Download" y se descarga), y... claro, sé ensamblador y entiendo lo que dice, pero a la hora de poner muchas AAAAAAs (90 As por ejemplo) con el CMD y darle a "más detalles", el offset no es "41414141", y no entiendo el porqué. He probado a ejecutarlo en un Win8 físico y en una máquina virtual con WinXP Professional SP1 (que no tiene ni siquiera el DEP, al ser SP1), y a debuggearlo con OllyDbg 1.10 y con Immunity Debugger, pero me da el mismo resultado.
En concreto, cuando intento debuggear con Olly sin argumentos, el exit code es 0, y cuando le pongo 90 As y le doy a F9 (run), el exit code es C0000409
He compilado el código fuente desde la consola de MVC++ 2005 (cl.exe /TC vuln1.c).
Subo el ejecutable por si queréis echarle un vistazo: http://bayfiles.net/file/17EMR/HuI4La/vuln1.exe
El código compilado es el siguiente:
Código
/* vuln1.c por Rojodos */ #include <stdio.h> // librería stdio.h, funciones básicas de Entrada/Salida int main (int argc, char **argv) // La función "principal" del programa función { char buffer[64]; //Declaramos un array con 64 bytes de espacio if (argc < 2) // Si los argumentos son menores que 2... { return 0; // y retornamos 0 a la función main, y el programa acaba } return 0; // Devolvemos 0 a main, y el programa acaba. }
He probado a seguir el tutorial de Coreland, y con el programa ya compilado del PDF nº 1 sí me funciona lo de modificar el EIP, pero si lo compilo yo no, y no sé por qué.
Gracias de antemano