ventajas software sistemas reingenieria que ppt pasos inversa ingenieria desventajas reverse-engineering

reverse-engineering - software - pasos de la ingenieria inversa



Teniendo en cuenta entrar en ingenierĂ­a inversa/desmontaje (6)

Acabo de encontrar una encuesta reciente que indica que la vulnerabilidad de la aplicación era una de las principales preocupaciones de la administración de TI en organizaciones más grandes, por lo que saber cómo se agrieta el software podría ser muy útil para evaluar la arquitectura de las aplicaciones y la codificación para la evaluación de vulnerabilidad.

Suponiendo una comprensión decente del ensamblaje en arquitecturas de CPU comunes (por ejemplo: x86), ¿cómo se puede explorar un camino potencial (carrera, diversión y ganancias, etc.) en el campo de la ingeniería inversa? Hay muy pocas guías educativas por ahí, por lo que es difícil entender qué usos potenciales tiene hoy en día (por ejemplo: ¿sigue siendo común la búsqueda de explotaciones de desbordamiento de búfer, o los programas de monitoreo de pila hacen que esto sea obsoleto?). No estoy buscando ningún programa paso a paso, solo información relevante como consejos sobre cómo encontrar un área específica de un programa de manera eficiente. Cosas básicas en el comercio. Así como para qué se está utilizando actualmente.

Entonces, para recapitular, ¿qué usos actuales produce hoy la ingeniería inversa? ¿Y cómo se puede encontrar información básica sobre cómo aprender el oficio (una vez más, no tiene que ser paso a paso, solo cualquier cosa que pueda ser útil a través de una pista)?


El actual mantenedor de FFMpeg comenzó sus códecs de video de ingeniería inversa para que los videos funcionen en Linux. Su blog es bastante interesante y ha publicado recientemente una publicación sobre un libro que desearía tener cuando comenzó.


El principal que conozco, como se mencionó anteriormente, está relacionado con el malware. Una de las tareas principales de los investigadores que trabajan para compañías de escáneres es tomar una muestra y depurarla en un laboratorio o entorno virtual.

En esa misma línea, hay muchas áreas relacionadas con la seguridad que utilizan ingeniería inversa / desmontaje. El análisis forense informático es un área que podría querer examinar. Es posible que una computadora confiscada contenga programas de comando y control (pero ninguna fuente) para diversas actividades (botnet de comando y control, programas de ataque DoS, etc.). Por lo general, es mucho más fácil eludir esquemas de datos protegidos mediante ingeniería inversa al programa que protege en lugar de averiguar la contraseña o clave.

La protección de DRM / seguridad tanto en hardware como en software es una gran área de ingeniería inversa. Tenga en cuenta que esto podría estar en el "lado" de la cuestión (y la ley). Considere los programas de copia de DVD, la eliminación de protección, la capacidad de reproducir música de iTunes en otros dispositivos, la capacidad de ejecutar programas homebrew en Wii, paralelizar una grilla de PS3, desbloquear un iPhone, etc., etc. Obviamente, hay muchas opciones únicas no legales también diseñar un temporizador de máquina tragamonedas, autenticación de cajero automático, etc).

La conversión de programas heredados es una gran oportunidad en muchas áreas, especialmente en el gobierno, las finanzas, la manufactura, etc. Hay programas de misión crítica que se han ejecutado durante 30 años en un mainframe o mini antiguo al que nadie tiene código fuente. Los equipos tienen que aplicar ingeniería inversa al programa para convertirlo en algo más nuevo.

Las otras sugerencias sobre el aprendizaje de tutoriales de Win32 son excelentes. Además, lamentablemente, algunos de los mejores trabajos publicados serán sobre cracking (juegos). Busque en eso y hay algunos tutoriales que muestran los conceptos básicos. Una clase que tomé usó el libro "El arte de la investigación y defensa de virus informáticos" de Peter Szor, pero fue más pesado en las ideas de malware y no en la parte exacta de desensamblaje.

Dependiendo de la ruta que tome, necesitará experiencia en otras cosas, pero saber que el ensamblaje será su habilidad más crítica. No solo desde el punto de vista de "entiendo lo que el código hace en su mayoría", debería poder escribir cosas desde cero y entender exactamente lo que hace un fragmento de código dado y entender otras formas en que se podría escribir el mismo código. El ensamblaje (codificación) implica descubrir una solución a un problema y codificarla. El desmontaje implica averiguar cuál de las muchas soluciones diversas se usó inicialmente para resolver el problema, MUCHO más difícil;)


Hay un libro Reversing: Secrets of Reverse Engineering escrito por Eldad Eilam; Elliot Chikofsky puede ser útil para usted.


He leído que la ingeniería inversa se utiliza en el campo de la seguridad para comprender el funcionamiento interno del malware y los troyanos (no estoy muy seguro de los virus). Para artículos sobre ingeniería inversa utilizados en el campo de la seguridad, visite www.openrce.org .

También la ingeniería inversa no siempre implica desmontaje. Para aplicaciones escritas en lenguajes como Java o C #, los descompiladores generalmente brindan más información sobre el código que los desensambladores.

Como mi interés personal está en la ingeniería inversa de Win32, solo puedo explicar mis opiniones para este sistema operativo en particular. No puedo ayudarte en la ingeniería inversa de Linux, entonces :(

Creo que la versión gratuita de IDA Pro 4.9 es un excelente desensamblador. Detecta las bibliotecas del sistema para que no pierdas el tiempo buscando lugares equivocados :) Junto con un depurador como OllyDbg , estás listo para abordar la mayoría de los proyectos de inversión para Win32.

Si recorres la ruta de Win32, eventualmente necesitarás entender la estructura de PE, quizás desempaquetar y esas cosas, pero la clave ahora es entender el ensamblado de x86. El código desensamblado para aplicaciones Win32 es relativamente fácil de entender si has realizado la codificación de API Win32 en lenguajes como C.

Para comprender mejor el ensamblaje de 32 bits, desmonte sus propias aplicaciones y vea cómo su código fuente corresponde a la salida de desensamblaje o aprenda cómo codificar las aplicaciones de la API de Win32 con el lenguaje de ensamblaje a través de los tutoriales de ensamblaje de Win32 de Iczelion .


Uno de los mayores usos potenciales que veo es un proyecto como samba ( http://www.samba.org/ )

Siempre habrá sistemas patentados cerrados como estos y siempre necesitamos ingenieros para revertirlos para que otros también puedan usarlos.