Una Aventura emocionante: Creando un programa C automodificable

2025-05-25

Este artículo detalla la creación de un programa C capaz de modificar su propio código en tiempo de ejecución. El autor primero explica cómo el código del programa se almacena en la memoria y cómo usar la función `mprotect()` para cambiar los permisos del segmento de código a escritura. Luego, modificando el valor inmediato de una instrucción `addl`, el autor demuestra la alteración de la salida del programa. Finalmente, el autor va más allá, usando `memcpy()` para copiar un shellcode al segmento de código del programa, ejecutando con éxito un comando de shell en tiempo de ejecución. Todo el proceso es técnicamente desafiante, requiriendo un fuerte entendimiento del lenguaje ensamblador x86_64.