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 (principios del siglo XXI), 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.
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 copiado desde el mismo surgimiento de la
ingeniería.
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 gran mayoría del software de pago incluye en su licencia
una prohibición expresa de aplicar ingeniería inversa a su código, con el
intento de evitar que se pueda modificar su código y que así los usuarios
tengan que pagar si quieren usarlo.
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.
La siguiente figura muestra los procesos que
sigue la ingeniería directa, si seguimos ese camino hacia "atrás" (o
de manera inversa), hacemos ingeniería inversa, si continuamos con el camino y
planteamos cambios (o mejoras), por la derecha, ese camino nos lleva a una
reingeniería, si no alteramos el contenido de los modelos obtenidos durante los
procesos de la ingeniería inversa y seguimos el camino de la izquierda, eso se
llama desarrollar una copia.
Extraído 29/01/2014 de: http://es.wikipedia.org/wiki/Ingenier%C3%ADa_inversa
No hay comentarios:
Publicar un comentario