Está en la página 1de 13

Instituto Tecnolgico de Tepic

Ingeniera en Sistemas Computacionales








Maestra: Neidy Delgado
Alumnos:
Rodrigo Ivn Garca Lpez
Ricardo Ernesto Prez Padilla
Geovanny Michel Aguilar Castaeda
Trabajo: UNIDAD 2. Redaccin del proyecto de investigacin.




Martes, 13 de mayo de 2014
Introduccin.
La ofuscacin de cdigo es una tcnica utilizada por programadores de un gran nmero de
lenguajes que quieren demostrar sus capacidades tcnicas e intelectuales para poder
ocultar el cdigo de cierto programa que ellos hayan realizado.
La finalidad de esta tcnica es principalmente, entre los crculos de programadores
experimentados, es ms que nada como pasatiempo o medirse en competencias donde
se evala la complejidad de cmo puede ser escondido el objetivo o la funcin del cdigo
que se est escribiendo para alguien que lo ve a simple vista, esto cabe destacar, es todo
lo contrario a algunos de los objetivos de lo que el programador debe de hacer en sus
programas, recordando estos objetivos son:
Operatividad.
Legibilidad.
Portabilidad.
Claridad.
Modularidad.
En el caso de la ofuscacin se busca lo opuesto a:
Legibilidad
Claridad
Modularidad
Debido a estas diferencias con lo que se busca como objetivo en la tcnica de la
ofuscacin se puede utilizar para otros fines distintos a tomarlo como un pasatiempo
como seguridad para evitar plagio o piratera.
Por ende lo que se intenta definir en esta investigacin es encontrar esos otros fines o
usos para esta tcnica de la ingeniera de software.




Marco Terico
Marco conceptual
Legibilidad Un programa puede hacerse ms legible dndole cierto formato al cdigo,
utilizando el sangrado (indentacin) para reflejar las estructuras de control del programa,
e insertando espacios o tabuladores. (Martnez, 2012).
1
Claridad Esta caracterstica se refiere a la facilidad con la que el texto del programa
comunica las ideas subyacentes. (Martnez, 2012).
1
Modularidad Dividir el programa en un nmero de mdulos pequeos y fciles de
comprender puede ser la contribucin ms importante a la calidad del mismo. Cada
mdulo debe realizar slo una tarea especfica y no ms. (Martnez, 2012)
1
Cdigo de computacin. Conjunto de instrucciones escritas en algn lenguaje de
programacin de computadoras, hechas para ser ledas y transformadas por alguna
herramienta de software (compilador, intrprete, ensamblador) en lenguaje de mquina o
instrucciones ejecutables en la mquina. (Wikipedia, 2014)
2
Ofuscacin del cdigo. La ofuscacin de cdigo consiste en reordenar o alterar las
instrucciones de un programa para que, aunque realice la misma funcin, sea ms difcil
su comprensin. En consecuencia, la ofuscacin es la herramienta ms importante para
evitar la ingeniera inversa. (UPV, 2011)
3
Ofuscacin. La ofuscacin se refiere a encubrir el significado de una comunicacin hacindola
ms confusa y complicada de interpretar. (Wikipedia, 2013)
4
Ingeniera inversa. La ingeniera inversa es el proceso de descubrir los principios
tecnolgicos de un dispositivo, objeto o sistema, a travs de razonamiento abductivo de
su estructura, funcin y operacin.
La ingeniera inversa se trata de tomar algo (un dispositivo mecnico o electrnico, un
software de computadora, etc.) para analizar su funcionamiento en detalle, generalmente
para intentar crear un dispositivo o programa que haga la misma o similar tarea sin copiar
la original. (Alegsa, 2010)
5
Desensamblador.
Un desensamblador es un programa de computadora que traduce el lenguaje de
mquina a lenguaje ensamblador, la operacin inversa de la que hace el ensamblador.
(Wikipedia, 2014)
6



ASCII.
ASCII (acrnimo ingls de AmericanStandard Codefor InformationInterchange Cdigo
Estndar Estadounidense para el Intercambio de Informacin) es un cdigo de caracteres
basado en el alfabeto latino, tal como se usa en ingls moderno y en otras lenguas
occidentales. (Wikipedia, 2014)
7
Marco referencial
Un ofuscador cdigo fuente acepta un archivo fuente de programa, y genera otro archivo
fuente funcionalmente equivalente que es mucho ms difcil de comprender o realizar
ingeniera inversa. Esto es til para la proteccin tcnica de la propiedad intelectual
cuando:
Cdigo fuente debe ser entregado para fines de ejecucin pblica (con lenguajes
interpretativos como ECMAScript en pginas web)
Componentes comerciales deben ser entregados en forma de cdigo fuente para
la integracin directa por un cliente en su producto final (aplicaciones porttiles en
C o PHP, etc, libreras de cdigo o componentes de hardware codificadas en
Verilog o VHDL)
El envo de casos de prueba derivados de cdigo propietario a los vendedores
(cdigo de activacin comportamiento con errores, etc.)
Cdigo objeto contiene todava demasiadas pistas (por ejemplo, los mtodos
pblicos de la clase utilizados solamente dentro de una aplicacin, al igual que con
los archivos de clase Java)
http://www.semdesigns.com/Products/Obfuscators/
La ofuscacin de cdigo es el encubrimiento de informacin haciendo que sea ms
confuso el tratar de leerlo, esto es algo que se utiliza en programacin para hacer que
un cdigo fuente sea muy confuso de entender, pero al momento de compilarlo o
interpretarlo funciona correctamente, esto es practicado ms que nada como una forma
de proteger tu cdigo para evitar sea pirateado o solo para hacerlo ilegible y que seas t
el nico para poder darle mantenimiento.
http://elhappy.net/2012/08/ofuscacion-de-codigo/
La ofuscacin de cdigo consiste en reordenar o alterar las instrucciones de un programa
para que, aunque realice la misma funcin, sea ms difcil su comprensin. En
consecuencia, la ofuscacin es la herramienta ms importante para evitar la ingeniera
inversa.
Como hemos podido comprobar en los apartados anteriores, cuando se compila Java se
incluye informacin para depurar cdigo en los byte codes (o cdigo Dalvik). En esta
informacin se incluyen los nmeros de lneas a partir de las que se ha generado el cdigo
o los nombres de las variables. Por ejemplo, en la clase BaseSplashActivity de la aplicacin
Apalabrados, dentro del fichero DEX se ha incluido informacin como que existe una
variable SPLASH_DURATION con nombre y que esta variable era inicializada en la lnea 21
del fichero Java.

http://www.androidcurso.com/index.php/tutoriales-android-avanzado/48-
unidad-9-ingenieria-inversa-en-android/348-ofuscacion-del-codigo


La ofuscacin de cdigo dinmica es una nueva forma de enmascarar el cdigo, a lo largo
de este artculo veremos las ventajas y riesgos que implican el descubrimiento de esta
nueva tcnica, as como algunos de las mtodos que existen tanto para ofuscar el cdigo,
como para lograr la desofuscacin del mismo, adems de las principales formas y lugares
donde esta tcnica puede ser aplicada.
La ofuscacin de cdigo dinmica es una tcnica que transforma el cdigo en garabatos
incomprensibles, esta tcnica puede ser utilizada con dos propsitos principales, el
primero como una herramienta de proteccin de derechos de autor del cdigo de los
programas, y el segundo como una amenaza a los mecanismos actuales de seguridad en la
red.
La mayora de las empresas tratan de evitar que su cdigo fuente pueda ser obtenido por
alguien ms, es por esto que hacen uso de herramientas que les permitan evitar que
alguien lo pueda obtener.
Sin embargo la ofuscacin tambin sirve como un mecanismo de para generar muchas
versiones del mismo cdigo, logrando de esta manera sobrepasar los mecanismos usuales
de anlisis de los sistemas de seguridad, como los antivirus.
La amenaza oculta
En la actualidad, a pesar de que los antivirus son cada da ms potentes y hacen uso de
tcnicas mucho ms complejas para lograr evitar las amenazas, nace una nueva tcnica
que logra poner en dificultad a estos sistemas actuales de defensa, esta nueva tcnica es
llamada ofuscacin de cdigo dinmica, y se basa en la transformacin o
enmascaramiento del cdigo para evitar que se pueda determinar la forma que tena
originalmente.
http://sg.com.mx/content/view/685

La ingeniera inversa es un procedimiento mediante el cual se toma un objeto por
separado para ver cmo funciona con la finalidad de duplicarlo o mejorarlo.
Aunque esta prctica era empleada por las antiguas industrias, en la actualidad su uso se
ha extendido al software y hardware, en cuyo caso, la ingeniera inversa aplicada al
software implica la reversin de un programa que est codificado en lenguaje maquina
(lenguaje de bajo nivel) a el cdigo fuente de alto nivel en el que fue escrito
originalmente.
http://dsp.mx/blog/sistemas-de-informacion/62-que-es-ingenieria-inversa

La ingeniera inversa se ha definido como el proceso de construir especificaciones de
un mayor nivel de abstraccin partiendo del cdigo fuente de un sistema software o
cualquier otro producto (se puede utilizar como punto de partida cualquier otro
elemento de diseo, etc.).
Estas especificaciones pueden volver ser utilizadas para construir una nueva
implementacin del sistema utilizando, por ejemplo, tcnicas de ingeniera directa.
(Sicilia, 2009).
Beneficios de Ingeniera Inversa
La aplicacin de ingeniera inversa nunca cambia la funcionalidad del software sino que
permite obtener productos que indican cmo se ha construido el mismo. Se realiza
permite obtener los siguientes beneficios:
Reducir la complejidad del sistema: al intentar comprender el software se facilita su
mantenimiento y la complejidad existente disminuye.
Generar diferentes alternativas: del punto de partida del proceso, principalmente cdigo
fuente, se generan representaciones grficas lo que facilita su comprensin.
Recuperar y/o actualizar la informacin perdida (cambios que no se documentaron en su
momento): en la evolucin del sistema se realizan cambios que no se suele actualizar en
las representaciones de nivel de abstraccin ms alto, para lo cual se utiliza la
recuperacin de diseo.
Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede
conducirnos a que surjan efectos no deseados, esta serie de anomalas puede ser
detectados por la ingeniera inversa.
Facilitar la reutilizacin: por medio de la ingeniera inversa se pueden detectar
componentes de posible reutilizacin de sistemas existentes, pudiendo aumentar la
productividad, reducir los costes y los riesgos de mantenimiento.
La finalidad de la ingeniera inversa es la de desentraar los misterios y secretos de los
sistemas en uso a partir del cdigo. Para ello, se emplean una serie de herramientas que
extraen informacin de los datos, procedimientos y arquitectura del sistema existente.
Publicado por: Miguel-ngel Sicilia.
http://cnx.org/content/m17432/latest/
- Optimizar el cdigo J avaScript consiste en "compilar", el ofuscador acta como
"compilador de J avaScript" convirtiendo el cdigo inicial en otro cdigo ms
optimizado. Un ejemplo de ofuscador que lo hace es el Google Closure Compiler.

- Ofuscar J avaScript consiste en procesar el cdigo de forma que no sea tan legible como
cuando lo escribi "manualmente" el programador, y no solamente cambiando los
nombres de las variables por letras simples que no indican nada respecto a su funcin,
sin tambin encriptando strings (y otros procesos similares). El proceso de renombrar
variables puede ser parte del proceso de optimizacin [optimization], o del de ofuscacin
[obfuscation] (depende del ofuscador).

- Minificar o minimizar el cdigo J avaScript consiste en eliminar los comentarios, el
whitespace (los retornos de carro / saltos de lnea, etc.) y los [;] innecesarios.
(ComDigitalPro, 2009).
http://www.comdigitalpro.com/javascript/como-ofuscar-y-minificar-codigo-javascript-
ofuscador-ofuscadores_66.html

Con las herramientas de ofuscacin de cdigo. Estas herramientas no impedirn la
decompilacin del cdigo, pero s que harn que sea prcticamente imposible
entenderlo, y por tanto editarlo y utilizarlo para las malas artes de un programador mal
intencionado. La mala intencin podra consistir en sacar un juego o programa muy
parecido al que hemos hecho nosotros.
Siempre es desagradable que copien tu trabajo ms ahn cuando has pasado muchas
horas de desarrollo en l. As que es necesario tener en cuenta el uso de las
herramientas de ofuscacin de cdigo.
(Jess Bosch, 2011)
La ofuscacin se refiere al acto deliberado de realizar un cambio no destructivo, ya sea en
el cdigo fuente de un programa informtico o cdigo mquina cuando el programa est
en forma compilada o binaria, con el fin de que no sea fcil de entender o leer.
Pues bien, esto es muy til a la hora de publicar nuestro cdigo Javascript en nuestra
pgina web, ya que cualquiera puede acceder a l. La ofuscacin la podemos utilizar
simplemente para que no nos copien nuestro cdigo Javascript o por si hemos cometido
algn error durante la programacin,ste que pueda servir como vulnerabilidad en
nuestra web.
Por ejemplo, tenemos ste cdigo:
1
2
3
4
5
6
var a="Hello World!";
function MsgBox(msg)
{
alert(msg+"\n"+a);
}
MsgBox("OK");
Ofuscado quedara de la siguiente manera:
1 var _0x55ae=["\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21","\x0A","\x4F\x4B"];var a=_0x55ae[0];function MsgBox(_0x9e43x3){alert(_0x9e43x3+_0x55ae[1]+a);} ;MsgBox(_0x55ae[2]);
Javascript Obfuscator es una aplicacin web que nos permite ofuscar nuestro cdigo
Javascript. Tiene varias opciones, como codificar las cadenas y los nmeros, mover las
cadenas, remplazar los nombres, etc.

(ReaccionesEstudio, 2013)
http://blog.reaccionestudio.com/como-ofuscar-codigo-javascript-generador-online/





Metodologa exploratoria.
Es aquella que se efecta sobre un tema u objeto desconocido o poco estudiado, por lo
que sus resultados constituyen una visin aproximada de dicho objeto, es decir, un nivel
superficial de conocimiento. Este tipo de investigacin, de acuerdo con Sellriz (1980)
pueden ser:
a) Dirigidos a la formulacin ms precisa de un problema de investigacin: dado que
se carece de informacin suficiente y de conocimiento previos del objeto de
estudio, resulta lgico que la formulacin inicial del problema sea imprecisa. En
este caso la exploracin permitir obtener nuevo datos y elementos que pueden
conducir a formular con mayor precisin las preguntas de investigacin.

b) Conducentes al planteamiento de una hiptesis: cuando se desconoce al objeto
de estudio resulta difcil formular hiptesis acerca del mismo. La funcin de la
investigacin exploratoria es descubrir las bases y recabar informacin que
permita como resultado del estudio, la formulacin de una hiptesis. Las
investigaciones exploratorias son tiles por cuanto sirve para familiarizar al
investigador con un objeto que hasta el momento le era totalmente desconocido,
sirve como base para la posterior realizacin de una investigacin descriptiva,
puede crear en otros investigadores el inters por el estudio de un nuevo tema o
problema y puede ayudar a precisar un problema o a concluir con la formulacin
de una hiptesis.
Como en este tipo de tcnica no hay mucha informacin disponible para poder definir una
metodologa descriptiva entonces se optara por una metodologa exploratoria, seria
conducente a dejar una base para ampliar las bases del tema enfocada a evitar el plagio
del tema.






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.

















Piratera de cdigo
Los buenos programadores no
sobresalen
El programador o la empresa no
obtienen ganancias de su software
El usuario no tiene el dinero para comprar
un software original
El usuario no tiene los conocimientos para
programar
Facilitar su trabajo a costa de otros Ganar dinero a costa de otros
La persona que copio el
cdigo no aprende nada
Se comete piratera
Hiptesis
La tcnica de ofuscacin de cdigo es ideal para poder evitar la ingeniera inversa de los
programas, con esto se evita la piratera, que se hagan generadores de llaves para poder
craquear los programas y que se pueda revisar el cdigo fuente por la competencia para
evitar la utilizacin ilegal del cdigo, esto puede resultar un poco ms laborioso y costos,
aplicar tcnicas de ofuscacin y ofuscadores que resulten eficaces para evitar lo antes
mencionado, pero los alcances que tendra aplicarlo en los productos terminados podran
ser bastante tiles sin mencionar los ahorros econmicos que se tendran al momento de
evitar el plagio de las ideas.

Objetivos de la investigacin
El principal objetivo de esta investigacin es presentar de alguna manera la utilidad que
este tipo de tcnicas nos presenta, adems de cmo es posible refinar su utilidad
utilizndola para fines de seguridad, ya que como ingenieros en sistemas, el cdigo que
realizamos tiene un valor real en el mercado, por lo cual debemos de ser muy cuidadosos
con las personas que puedan plagiar el contenido de nuestros programas, ofuscando
(ocultando) el contenido del mismo entonces es una capa ms de seguridad que se puede
aplicar para que nuestro cdigo sea realmente seguro y tenga que llegar nicamente a las
manos de las personas que realmente estn destinadas (colaboradores y clientes).
Justificacin
La investigacin es justificable por el simple hecho de lo que representa tanto econmica
e intelectualmente el plagio o piratera del software, la estabilidad econmica, mental y
social se ve en juego en algunos sectores de la poblacin por este tipo de problemtica,
incluir esta prctica para desarrolladores de software reducira en gran medida los
problemas que se mencionan anteriormente con esto los empleos en el rea de la
informtica no se veran tan afectados como en pocas actuales y el xito o fracaso de un
ingeniero en sistemas se vera solamente por su capacidad intelectual y no por factores
externos como la piratera o plagio.
Delimitacin
Lo que se estar investigando en este proyecto ser directamente las tcnicas de
ofuscacin utilizadas en la actualidad y como pueden ayudar a los proyectos para evitar
problemas con la piratera o el plagio del cdigo. Obviamente esta investigacin est
enfocada a las personas que tienen conocimientos del rea de ciencias de la computacin
como licenciaturas o ingenieras y tambin profesionistas que ya tienen proyectos de
desarrollo de software.

Impacto tico, Social, Tecnolgico, Econmico y
Ambiental
Ms que nada lo que impacta en esas reas es el problema, que en este caso sera el
plagio y piratera de software, el desarrollo de tcnicas de ofuscacin intentan reducir ese
impacto directamente evitando que se produzca el problema para empezar.
En el lado tico, es algo que se ve muy afectado por lo que significa piratear o plagiar
algn producto de software, es bsicamente robar las ideas que otra persona o empresa
puso empeo, dedicacin y dinero en producir, hacer estas actividades ilcitas se han
vuelto cosa de todos los das por la facilidad que conlleva bajar un software, aplicar un
parche y automticamente tenerlo pirateado sin costo, por lo tanto las personas o
usuarios ya no toman como algo malo realizar este perjuicio contra los desarrolladores, y
esto es precisamente lo ms malo, se dej de pensar que se comete algo ilcito, en este
caso esto ltimo es lo que afecta socialmente, la perdida de sentido del delito.
Tecnolgicamente hablando afecta porque al no haber una ganancia directa por los
productos o ms bien una prdida considerable de las ganancias, los desarrolladores
entran en un estancamiento tecnolgico porque se dejan de producir ideas nuevas al
saber que su producto ser plagiado, sin garantizar ni su reconocimiento ni su
remuneracin, aqu tambin entra el lado econmico porque las prdidas del sector son
multimillonarias al ao, son ganancias que evitan que muchas personas tengan un sueldo
digno y empleos se pierdan por el mismo problema.







Fuentes de informacin:
1
Martnez, E. (2012). Caractersticas de un buen programa. masinteligencia.wordpress.com,
recuperado el 2012/08/22, de http://masinteligencia.wordpress.com/2012/08/22/caracteristicas-
de-un-buen-programa/
2
Wikipedia (2014). Cdigo fuente. es.wiktionary.org, recuperado el 2014/05/14, de
http://es.wiktionary.org/wiki/c%C3%B3digo_fuente
3
Universidad Politcnica de Valencia (2011). Ofuscacin del cdigo. www.androidcurso.com,
recuperado el 2014/05/14, de http://www.androidcurso.com/index.php/tutoriales-android-
avanzado/48-unidad-9-ingenieria-inversa-en-android/348-ofuscacion-del-codigo
4
Wikipedia (2013). Ofuscacin. es.wikipedia.com. recuperado el 2013/04/24, de
http://es.wikipedia.org/wiki/Ofuscacin
5
Alegsa (2010). Ingeniera Inversa. www.alegsa.com.ar. Recuperado el 2010/02/19, de
http://www.alegsa.com.ar/Dic/ingenieria%20inversa.php
6
Wikipedia (2014). Desensamblador. es.wikipedia.org. Recuperado el 2014/01/21, de
http://es.wikipedia.org/wiki/Desensamblador
7
Wikipedia (2014). ASCII. es.wikipedia.org. Recuperado el 2014/04/15, de
http://es.wikipedia.org/wiki/ASCII

También podría gustarte