Está en la página 1de 4

INGENIERÍA INVERSA

"El análisis de un sistema para identificar sus componentes actuales y las dependencias que existen
entre ellos, para extraer y crear abstracciones de dicho sistema e información de su diseño"
(Chifofsky, 1990).

"El proceso de analizar el código, documentación y comportamiento de un sistema para identificar


sus componentes actuales y sus dependencias para extraer y crear una abstracción del sistema e
información de diseño. El sistema en estudio no es alterado, sino que se produce conocimiento
adicional acerca del sistema" (SEI, 2004)

¿En alguna ocasión has oído hablar de ingeniería inversa?, ¿Sabes en qué consiste?

Para ver la importancia de la ingeniería inversa solo hay que trasladarse a los años 80.

En aquella época IBM era el rey tecnológico y nadie (ni siquiera Apple o Microsoft) podían competir
con ella.

Hasta que una empresa llamada Phoenix Technologies dio un vuelco al mercado replicando la BIOS
utilizada por IBM (hasta el momento líder del sector) mediante el uso de ingeniería inversa.

Gracias a este hecho, el gran beneficiado fue Microsoft que aprovechó esto para dar el “boom”
tecnológico con su sistema operativo MS-DOS y posteriormente Windows.

Podemos por lo tanto concluir que, el uso de ingeniería inversa cambió la historia de la informática.

¿Cuál es su objetivo?

El objetivo de la ingeniería inversa es obtener información o un diseño a partir de un producto


accesible al público, con el fin de determinar de qué está hecho, qué lo hace funcionar y cómo fue
fabricado.

Hoy en día, los productos más comúnmente sometidos a ingeniería inversa son los programas de
computadoras y los componentes electrónicos, pero, en realidad, cualquier producto puede ser
objeto de un análisis de Ingeniería Inversa.

En el caso concreto del software, se conoce por ingeniería inversa a la actividad que se ocupa de
descubrir cómo funciona un programa, función o característica de cuyo código fuente no se dispone,
hasta el punto de poder modificar ese código o generar código propio que cumpla las mismas
funciones.

La ingeniería inversa nace en el transcurso de la Segunda Guerra Mundial, cuando los ejércitos
enemigos incautaban insumos de guerra como aviones u otra maquinaria de guerra para mejorar
las suyas mediante un exhaustivo análisis.
Definición de Ingeniería inversa

El método se denomina así porque avanza en dirección opuesta a las tareas habituales de ingeniería,
que consisten en utilizar datos técnicos para elaborar un producto determinado. En general, si el
producto u otro material que fue sometido a la ingeniería inversa fue obtenido en forma apropiada,
entonces el proceso es legítimo y legal. De la misma forma, pueden fabricarse y distribuirse,
legalmente, los productos genéricos creados a partir de la información obtenida de la ingeniería
inversa, como es el caso de algunos proyectos de Software libre ampliamente conocidos.

El programa Samba es un claro ejemplo de ingeniería inversa, dado que permite a sistemas
operativos UNIX compartir archivos con sistemas Microsoft Windows. El proyecto Samba tuvo que
investigar información confidencial (no liberada al público en general por Microsoft) sobre los
aspectos técnicos relacionados con el sistema de archivos Windows. Lo mismo realiza el proyecto
WINE para el conjunto de API de Windows y OpenOffice.org con los formatos propios de Microsoft
Office, o se hace para entender la estructura del sistema de archivos NTFS y así poder desarrollar
drivers para la lectura-escritura sobre el mismo (principalmente para sistemas basados en
GNU/Linux).

La ingeniería inversa es un método de resolución. Aplicar ingeniería inversa a algo supone


profundizar en el estudio de su funcionamiento, hasta el punto de que podamos llegar a entender,
modificar y mejorar dicho modo de funcionamiento.

Pero este término no sólo se aplica al software, sino que también se considera ingeniería inversa el
estudio de todo tipo de elementos (por ejemplo, equipos electrónicos, microcontroladores, u objeto
fabril de cualquier clase). Diríamos, más bien, que la ingeniería inversa antecede al nacimiento del
software, tratándose de una posibilidad a disposición de las empresas para la producción de bienes
mediante copiado1 desde el mismo surgimiento de la ingeniería.

¿Por qué se llama Ingeniería Inversa?

1- Objetivos y medios contrarios:


– INGENIERIA: Desarrollo de un producto a partir de unas especificaciones dadas, usando para ello
los recursos disponibles.

– ING. INVERSA: A partir de un producto se realiza la deducción de las especificaciones que cumple
y los recursos usados para ello.

2- Proceso de implementación invertido:

– INGENIERIA: De lo concreto a lo abstracto.

– ING. INVERSA: De lo abstracto a lo concreto.

Usos de la ingeniería inversa

* La ingeniería inversa suele ser empleada por empresas, para analizar si el producto de su
competencia infringe patentes de sus propios productos.

* Muchas veces, la ingeniería inversa es utilizada en el área militar para investigar (y copiar) las
tecnologías de otras naciones, sin obtener planos ni detalles de su construcción o desarrollo.

* En el software y en el hardware, la ingeniería inversa, muchas veces es empleada para desarrollar


productos que sean compatibles con otros productos, sin conocer detalles de desarrollo de éstos
últimos. En otras palabras, quien desarrolla los nuevos productos, no puede acceder a los detalles
de fabricación de los productos de los que intenta ser compatibles.

* La ingeniería inversa también es empleada para comprobar la seguridad de un producto, generar


keygens de aplicaciones, reparación de productos, etc.

Motivación

Ilícitas:

– Apropiación tecnológica.
– Económica (explotación de los resultados).

Licitas:

– Sustitución de componentes obsoletos.

– Auditoria de seguridad.

– Comprobar respeto de patentes y licencias.

Ingeniería inversa del Software

La ingeniería inversa de software es un tipo de ingeniería inversa dedicada a las aplicaciones.

La ingeniería inversa en software significa descubrir qué hace el software sin tener el código fuente
programado del mismo. Es una tarea que, en general, es complicada.

Suele emplearse con fines de aprendizaje, diagnóstico de software, análisis de seguridad y pirateo
de programas.

Beneficios de Ingeniería Inversa del Software

La aplicación de ingeniería inversa nunca cambia la funcionalidad del software sino que permite
obtener productos que indican cómo 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 código
fuente, se generan representaciones gráficas lo que facilita su comprensión.

– Recuperar y/o actualizar la información perdida (cambios que no se documentaron en su


momento): en la evolución del sistema se realizan cambios que no se suele actualizar en las
representaciones de nivel de abstracción más alto, para lo cual se utiliza la recuperación de diseño.

– Detectar efectos laterales: los cambios que se puedan realizar en un sistema puede
conducirnos a que surjan efectos no deseados, esta serie de anomalías puede ser detectados por
la ingeniería inversa.

– Facilitar la reutilización: por medio de la ingeniería inversa se pueden detectar componentes


de posible reutilización de sistemas existentes, pudiendo aumentar la productividad, reducir los
costes y los riesgos de mantenimiento.

La finalidad de la ingeniería inversa es la de desentrañar los misterios y secretos de los sistemas en


uso a partir del código. Para ello, se emplean una serie de herramientas que extraen información de
los datos, procedimientos y arquitectura del sistema existente.

También podría gustarte