Está en la página 1de 4

OFUSCACIN DE CDIGO

INTRODUCCION
Una de las mximas que se suele recordar a menudo a los desarrolladores es que
programen como si su cdigo fuera a ser mantenido por un psicpata violento que conozca la
direccin de sus casas. Y es que a veces esa persona que acaba manteniendo el cdigo somos
nosotros mismos, y es normal acabar odindose a uno mismo por haber escrito algunas lneas
totalmente incomprensibles y sin ningn tipo de documentacin.
Sin embargo, hay ocasiones en las que nos puede interesar ofuscar el cdigo. Por ejemplo, cuando
el cdigo vaya a ser visible por el cliente, como suele ocurrir en lenguajes como JavaScript, y no
deseas que nadie pueda desentraar su funcionamiento o modificarlo, ya sea para conseguir
seguridad por oscuridad o para evitar ser plagiado por competidores.
O simplemente, por diversin, como hacen en el Concurso Internacional de Cdigo C
Ofuscado(IOCCC por sus siglas en ingls), donde puedes encontrar desde programas escritos en
una sola lnea a verdaderas obras maestras del ASCII Art, pasando por autnticas maraas de
redefinicin de smbolos o programas capaces de autorreplicarse. Toda una demostracin de
maestra al teclado, aunque eso s, nada aconsejable en entornos profesionales.
ANTECEDENTES
En el rea del desarrollo informtico siempre se aconseja a los programadores que su cdigo sea
lo ms claro y legible posible. Los alumnos instruidos en estas materias son adiestrados no slo
para introducir de manera profusa y prolija comentarios en los archivos fuente de sus aplicaciones,
sino tambin para procurar que ese cdigo sea lo ms limpio, claro y simple posible, as como la
documentacin que lo pudiera acompaar.
Las razones que explican este comportamiento son de carcter prctico. Meses o aos despus de
generar un programa debemos poder entender, prcticamente a vuela pluma, qu es lo que hace
cada sentencia y cada instruccin. Ms an, y es que futuros destripadores de nuestro software
han de comprender sin apenas esfuerzo lo que hemos querido hacer en cada momento y disponer
de la posibilidad de realizar modificaciones sin tener que salvar una larga curva de aprendizaje. Es
lo que ensea una de las primeras proposiciones de la programacin extrema.
Esta prctica de ocultacin de detalles es muy normal en el mundo del desarrollo de virus
informticos, pero tambin se ha convertido en todo un arte y hasta en una competicin
internacional en toda regla. El mtodo se conoce como ofuscacin de cdigo.







MARCO TEORICO
El cdigo ofuscado es aquel tan intrincado, enredado, enrevesado y confuso que resulta
prcticamente imposible su descifrado incluso por la madre que lo pari. Y no requiere de tcnicas
criptogrficas ni de complejos cifrados, slo de la pericia del programador, de su imaginacin y de
su capacidad para liar sobre liado. Aunque bien es cierto que existe software a tal efecto que
permite ofuscar ya no cdigo fuente, sino tambin cdigo objeto compilado con el fin de evitar al
mximo tcnicas de ingeniera inversa que pudieran revertir el proceso de compilacin y dar con
un programa en texto plano. Pero eso es otra historia.
Tcnicas de ofuscacin de cdigo existen muchas, aunque la mayora de ellas pasan por la
destreza del programador para embarullar el texto. Una primera y sencilla opcin podra ser, por
ejemplo, llamar a las variables, funciones o procedimientos con nombres reservados del lenguaje,
algo modificados evidentemente.
Una desventaja importante de la ofuscacin es que el mantenimiento y la solucin de
problemas de una aplicacin son tareas ms difciles. En un cdigo bien ofuscado, los nombres de
todos los tipos, mtodos y campos se pueden cambiar de sus nombres informativos a nombres
semi aleatorios sin significado, lo que complica extraordinariamente la depuracin del cdigo en
caso de errores de ejecucin y, asimismo, el sostenimiento y escalado de la propia aplicacin.
A pesar de ello, muchos desarrolladores prefieren ofuscar su cdigo y utilizar herramientas
especficas para descodificar los informes de errores enviados en forma de seguimientos de pilas;
lase Dotfuscator para .NET, Proguard para Java o PHP Obfuscator para los script en PHP.
Se dice que algunos lenguajes de programacin se prestan ms a la ofuscacin que otros, como
por ejemplo C, C++ o Perl. Incluso, existen lenguajes que nacieron con la ofuscacin como premisa,
adems de otras caractersticas extraas. Son los denominados lenguajes de programacin
esotricos, que slo el nombre ya da canguelo.
La ofuscacin de cdigo, como decamos al principio, es una tcnica bastante utilizada en la
programacin de virus, aunque tambin se sirven de ella los generadores de spam y de sitios web
fraudulentos para esconder las verdaderas acciones de los guiones en Javascript o del propio
cdigo HTML de la pgina. Sin embargo, existe una tendencia ms ldica y divertida que convierte
al cdigo ofuscado en un arte con maysculas.




PLANTEAMIENTO DEL PROBLEMA
El principal problema del programador es que plagien su cdigo o lo copien, ya que todo
su esfuerzo y dedicacin se ven daados debido a que existen algunas personas que se
dedican a copiar otros cdigos y no crean los suyos, es por eso que fue creada la
ofuscacin de cdigo.
















Plagio de cdigo
El verdadero programador no
sobresale
Problemas personales
directamente entre
programadores
El programador plagio con el
tiempo demuestra sus
conocimientos
Prdida de tiempo y dinero
para la empresa que lo
contrato