Google

Reingeniería Ingeniería inversa

Los conceptos de reingeniería e ingeniería inversa están ligados al desarrollo de software a gran escala, el objetivo es obtener información 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. Los productos más comunes que son sometidos a la ingeniería inversa son los programas de computadoras y los componentes electrónicos.

Este método es denominado ingeniería inversa 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 genericos creados apartir 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 relacionado 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 del mismo (principalmente para sistemas basados en 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 podemos llegar a entender, modificar, y mejorar dicho modo de funcionamiento.

Pero este término no sólo se aplica al software de protección. Así pues se considera ingeniería inversa también al estudio de todo tipo de elementos, por ejemplo equipos electrónicos, microcontroladores, etc..., siempre y cuando el resultado de dicho estudio repercuta en el entendimiento de su funcionamiento.

Dado que es una labor estratégica, es conveniente conocer cuando conviene realizar la tarea de Ingeniería inversa para una aplicación y cuándo es más rentable sustituirla e implementar una nueva. Las aplicaciones para el primer paso, son aquellas en la que se produce las siguientes situaciones:

• Fallos frecuentes, que son difíciles de localizar
• Son poco eficientes, pero realizan la función esperada
• Dificultades en la integración con otros sistemas
• Calidad pobre del software final
• Resistencia a introducir cambios
• Pocas personas capacitadas para realizar modificaciones
• Dificultades para realizar pruebas
• El mantenimiento consume muchos recursos
• Es necesario incluir nuevos requisitos, pero los básicos se mantienen.

Fuentes y Recursos:
wikipedia.org
monografias.com

2 comentarios:

Oscar Arocha Almesto dijo...

majo te pasas espero que todos tus articulos sean igual de buenos que los cuantos que he leido, ya ves de hacking no tengo mucha idea pero eres muy explicito sobretodo en la atmosfera que le das a tu sitio, por cierto me quedé con ganas de leer algo de "index of " en la entrada que describías como buscar en google, explicame en realidad para que sirve ese criterio. intentaré pasarme más por aqui siempre que el tiempo me lo permita a ver que más puedo aprender, sobretodo si son temas tan interesantes como este, ademas de descubrir la existencia del script de geomap (soy nuevo en blogger) muy bueno tio

Oscar Arocha Almesto dijo...

Demasiado friki, opino que se perdió mucho más de lo que pensó.
Supongo que lo único que obtendría es no verse influenciado.

Oscar Arocha