Código ofuscado

Muchos de los que leen este blog seguro que ya saben a qué me refiero por código ofuscado. Si es ese el caso, probablemente lo que cuente a continuación ya lo sepas. Para los demás, si os apetece ver las cosas que un friki de la programación puede hacer cuando se aburre, continúa leyendo.

El código ofuscado es, según la Wikipedia el “[..] acto deliberado de realizar un cambio no destructivo, ya sea en el código fuente de un programa informáticocódigo máquinacuando el programa está en forma compilada o binaria, con el fin de que no sea fácil de entender o leer”. De cara al programado que quiere echarse unas risas es hacer un programa correcto pero que no pueda entenderse leyéndolo. ¿Y eso por qué? Porque podemos.

Imaginemos algo sencillo: en C hacer un programa que muestre por pantalla un “Hola, mundo” es algo tan aburrido como lo siguiente:

int main(void)
{
   printf("Hola, mundo");
   return 0;
}

Sin duda algo muy soso, sería más divertido una cosa como la siguiente:

#define __ main
#define ___ printf
int
__(int _, char **b)
{
   return (_ > 0)? ((_==1)?__(_-1, 0):0):___("Hola, mundo");
}

Ahora mismo no sé si funciona, pero como podéis comprobar es muuuucho más clarooooo (entiendase el sarcasmo). Ya lo único que le faltaría es ocultar el mensaje de algún modo estrafalario.

A parte de las connotaciones divertidas que pueda tener la ofuscación de código (hay códigos con forma de avión, círculos, etc.), también sirve para reducir el tamaño del código de ciertos programas. Por ejemplo, en el mundo de la web, los códigos javascript se suelen comprimir utilizando técnicas de sustitución parecidas a las de la ofuscación para que ocupen menos y se transmitan más rápido por la red.

También hay quien utiliza este tipo de códigos para evitar que se copien los algoritmos utilizados y que no se pueda hacer ingeniería inversa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *