El objetivo de la ingeniería inversa es obtener información o un diseño a
partir de un producto, con el fin de determinar de qué está hecho, qué lo hace
funcionar y cómo fue fabricado.
Hoy 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 elsistema 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.
La aplicación de
ingeniería inversa nunca cambia la funcionalidad del producto objeto de la aplicación sino que permite obtener
productos que indican cómo se ha construido el mismo. Su realización 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.
Hola querida,
ResponderEliminarMe gusta mucho tu blog. Veo Daily Your Blog, es muy útil para mí.
Usted además puede encontrar Ingeniería De Reversa ¿Necesitas Stencil para Componentes en México? Ofrecemos una plantilla de acero inoxidable cortada con láser ideal para colocar la pasta de soldadura en su prototipo de manera más precisa.
Visitar ahora:- https://www.pcbrapido.com/serviciostencil/
gracias
ResponderEliminar