Está en la página 1de 9

1.

3 INGENIERIA INVERSA

Historia

La Ingeniería Inversa es una metodología


que se utiliza para obtener modelos o
duplicados a partir de un objeto de referencia.
Esta metodología a menudo se confunde con
la piratería y por lo general no es enseñada
de manera formal en las instituciones
educativas. Por otro lado, en las tareas
industriales, la Ingeniería Inversa se aplica de
manera directa o indirecta en procesos,
máquinas y el duplicado de partes y componentes. La experiencia indica que
en casi un 80% de las actividades de las industrias, está relacionado algún
método de la Ingeniería Inversa.
La ingeniería inversa comenzó a principios de la década pasada como una
tecnología basada en la búsqueda de las características detalladas de un
elemento o producto terminado utilizando un método de análisis regresivo; es
decir pasando del todo a cada una de las partes, todo esto sin la ayuda de
algún plano original de dicho producto. Se busca por lo tanto los secretos que
guardan las cosas para su construcción. A esta búsqueda de características le
sigue la transformación en un nuevo producto con las mismas o mejores
características que el original. Sin embargo, no es sólo el hecho de llegar a
construir este nuevo elemento lo más importante, sino que la Ingeniería
Inversa incluye todas las tareas de reconocimiento y análisis del
funcionamiento de cada una de las piezas que conforman el todo original.
A lo largo de la historia la técnica de la ingeniería inversa ha estado presente
en los seres humanos y en el acto común de pensar. El tema de descubrir los
secretos que guardan todas las cosas
ha sido una preocupación constante en
la humanidad. El concepto casi filosófico
que envuelve a la I.I puede
generalizarse a toda la ciencia humana,
que podría ser considerada un enorme
proyecto de Ingeniería Inversa que
busca determinar las características del
diseño del universo, es decir las leyes
naturales que lo rigen. Un caso
particular de este punto de vista lo tiene Daniel Dennett, un erudito filósofo
estadounidense, quien aplica la esencia de la I.I a la biología diciendo que es
un esfuerzo concertado por encontrar el diseño de los organismos a partir de
la observación de su anatomía y fisiología, es decir, de su estructura y
comportamiento. (Dennett, 1995).
Dennett hace esta analogía, asumiendo que la evolución biológica es un
proceso de investigación y desarrollo equivalente al que se da en la industria
ingenieril en general. La diferencia estriba en que no existen diseñadores
conscientes, pues la evolución biológica dirige la producción de organismos
mediante un algoritmo automático denominado “selección natural”. La copia
de productos es inicialmente una forma de beneficiar a muchos de la misma
creación. La fabricación en serie de los productos parte de un modelo único y
esta constante ejecución del procedimiento ha dado inicio a lo que hoy se ha
denominado Ingeniería Inversa. Sin embargo, la copia de objetos en 3D aún
no había sido posible. Hace 30 años aparecieron las primeras máquinas
copiadoras las cuales tenían dos cabezales, uno de ellos con un palpador que
recorría las secciones de la pieza maestra, y el otro que tenía un cabezal de
fresado seguía la geometría que iba describiendo el palpador y copiaba la
pieza sobre un bloque de material. Para ser estrictos se trataba de unos
pantógrafos adaptados al proceso de mecanizado.
Pasaron los años, y en las últimas dos décadas se han dado pasos
importantes en la tecnología ingenieril. Se ha logrado separar las fases de
digitalización (que se hacía con el palpador) con la del mecanizado usando
algoritmos de control numérico. Con el avance del control industrial se ha
logrado la automatización de la mayoría de los procesos en ingeniería. El
proceso de digitalización no ha sido la excepción y si antes se hacía
manualmente ahora ya existen software especializados en la digitalización o
por otro lado existe la misma I.I encargada de llevar este proceso a cabo. El
desarrollo de las modernas tecnologías de diseño y construcción, es decir las
tecnologías CAD/CAM, han cambiado las necesidades de los ingenieros.
Antes sólo eran objetivos simples como la obtención de copias sencillas pero
ahora son necesarias herramientas y procedimientos de ingeniería inversa. A
diferencia del copiado que va en una sola dirección, es decir se generan los
modelos para luego construirlo con alguno de los métodos de manufactura; la
I.I captura digitalmente los datos de la morfología de la pieza y los exporta a
un sistema CAD/CAE/CAM en donde podrán ser corregidos, mejorados,
mecanizados, etc; generándose múltiple caminos para tratar la pieza.
Beneficio

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. 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.
Tipos

 Ingeniería inversa de datos: Se aplica sobre algún código de bases


datos (aplicación, código SQL, etc) para obtener los modelos relacionales
o sobre el modelo relacional para obtener el diagrama entidad-relación

 Ingeniería inversa de lógica o de proceso: Cuando la ingeniería inversa


se aplica sobre código de un programa para averiguar su lógica o sobre
cualquier documento de diseño para obtener documentos de análisis o de
requisitos.

 Ingeniería inversa de interfaces de usuario: Se aplica con objeto de


mantener la lógica interna del programa para obtener los modelos y
especificaciones que sirvieron de base para la construcción de la misma,
con objeto de tomarlas como punto de partida en procesos de ingeniería
directa que permitan modificar dicha interfaz.
Herramientas

Los depuradores
Un depurador es un programa que se
utiliza para controlar otros programas.
Permite avanzar paso a paso por el
código, rastrear fallos, establecer puntos
de control y observar las variables y el
estado de la memoria en un momento
dado del programa que se esté depurando.
Los depuradores son muy valiosos a la
hora de determinar el flujo lógico del
programa.

Un punto de ruptura (Breakpoint) es una


instrucción al depurador que permite parar
la ejecución del programa cuando cierta condición se cumpla. Por ejemplo,
cuando un programa accede a cierta variable, o llama a cierta función de
la API, el depurador puede parar la ejecución del programa.

Inyección de Fallos
Las herramientas que
pueden proporcionar
entradas malformadas
con formato inadecuado
a procesos del software
objetivo para provocar
errores son una clase de
herramientas de
inserción de fallos. Los
errores del programa
pueden ser analizados
para determinar si los
errores existen en el software objetivo. Algunos fallos tienen implicaciones en
la seguridad, como los fallos que permiten un acceso directo del asaltante al
ordenador principal o red.

Hay herramientas de inyección de fallos basados en el anfitrión que funcionan


como depuradores y pueden alterar las condiciones del programa para
observar los resultados y también están los inyectores basados en redes que
manipulan el tráfico de la red para determinar el efecto en el aparato receptor.
Los Desensambladores

Se trata de una herramienta que convierte código máquina en lenguaje


ensamblador. El lenguaje ensamblador es una forma legible para los humanos
del código máquina. Los desensambladotes revelan que instrucciones
máquinas son usadas en el código. El código máquina normalmente es
específico para una arquitectura dada del hardware. De forma que los
desensambladotes son escritor expresamente para la arquitectura del
hardware del software a desensamblar.

Los compiladores Inversos o Decompiladores


Un decompilador es una herramienta que transforma código en ensamblador
o código máquina en código fuente en lenguaje de alto nivel. También existen
decompiladores que transforman lenguaje intermedio en código fuente en
lenguaje de alto nivel. Estas herramientas son sumamente útiles para
determinar la lógica a nivel superior como bucles o declaraciones if-then de
los programas que son decompilados. Los decompiladores son parecidos a
los desensambladotes pero llevan el proceso un importante paso más allá.

Las Herramientas CASE


Las herramientas de ingeniería de
sistemas asistida por ordenador
(Computer-Aided Systems Engineering
– CASE) aplican la tecnología
informática a las actividades, las
técnicas y las metodologías propias de
desarrollo de sistemas para automatizar
o apoyar una o más fases del ciclo de vida del desarrollo de sistemas.

En el caso de la ingeniería inversa generalmente este tipo de herramientas


suelen englobar una o más de las anteriores junto con otras que mejoran el
rendimiento y la eficiencia.
BIBLIOGRAFIA

Jiménez, L. Reyes, A. García. Algunas consideraciones sobre la Ingeniería


Inversa, Informe Interno de Investigación, Centro de Tecnología Avanzada de
ITESCA, Red Alfa, Sonora, México, 2006, ISBN: 970-9895-12-5.

Jiménez E., Luna A., García A., Martínez V., Luna G., Delfín J. Arellano L., La
ingeniería inversa como metodología para potenciar la enseñanza de la
metrología. Simposio de Metrología (2010). CENAM. 27 al 29 de Octubre.
Querétaro.

A. García, J. Ruiz, E. Jiménez, L. Reyes, G. Luna, S. Ontiveros, V. Martínez, F.


Ochoa, E. Carrillo. Clasificación de programas y Modelos de la Ingeniería
Inversa: Aplicaciones a un caso de estudio. SOMIM 2008. Puebla, México.

También podría gustarte