Reverseamos un hola mundo.
#include <stdio.h>
int main(){
printf("Hola Mundo\n");
return 0;
}
Aquí vemos que el compilador modifico nuestro main haciéndolo una función de tres argumentos que no son nuestros, sino del compilador, y tiene una variable. var_4
que creo el compilador la cual si hacemos las cuentas devolverá siempre 10 y la utilizara el compilador al cerrar el programa, por supuesto nada de esto es código propio, vayamos a nuestro código, propiamente dicho.
.text:004012BA mov dword ptr [esp], offset aHola ; “hola” .text:004012C1 call printf
Allí vemos que pone en el stack un puntero a la string hola que esta en la sección rdata, si hacemos click en aHola, nos muestra que esta exactamente en 403000 y que es el argumento de la funcion printf.
Si vamos a DEBUGGER y elegimos por ejemplo el debugger local de win32
y ponemos breakpoint alli.