2010-05-03 19 views
18

Suponiendo una comprensión decente de ensamblaje en arquitecturas de CPU comunes (por ejemplo: x86), ¿cómo se puede explorar una ruta potencial (carrera, diversión y ganancias, etc.) en el campo de la ingeniería inversa? Hay tan pocas guías educativas, por lo que es difícil entender qué usos potenciales tiene hoy en día (por ejemplo: ¿la búsqueda de vulnerabilidades de desbordamiento de búfer aún es común, o los programas de monitoreo de pila lo hacen obselete?). No estoy buscando ningún programa paso a paso, solo información relevante, como consejos sobre cómo encontrar de manera eficiente un área específica de un programa. Cosas básicas en el comercio. Además de para qué se usa actualmente.Considerar entrar en ingeniería inversa/desmontaje

En resumen, ¿qué usos actuales tiene el rendimiento de la ingeniería inversa en la actualidad? ¿Y cómo puede uno encontrar información básica sobre cómo aprender el oficio (una vez más no tiene que ser paso a paso, todo lo que pueda a través de una pista sería útil).

Respuesta

14

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

En la misma línea, hay muchas áreas relacionadas con la seguridad que utilizan ingeniería inversa/desmontaje. La informática forense es un área en la que es posible que desee estudiar. Una computadora confiscada podría contener programas de comando y control (pero no de origen) para diversas actividades (botnet de comando y control, programas de ataque DoS, etc.). Por lo general, es mucho más fácil eludir los esquemas de datos protegidos mediante la ingeniería inversa del programa que protege en lugar de averiguar la contraseña o clave.

La protección DRM/de 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" del problema (y la ley). Considere programas de copia de DVD, eliminación de protección, la capacidad de reproducir música de iTunes en otros dispositivos, la capacidad de ejecutar programas de homebrew en Wii, paralelizar una grilla de PS3, desbloquear un iPhone, etc., obviamente, también hay muchas opciones no legales (revés) diseñar un temporizador de máquina tragamonedas, autenticación de máquina ATM, etc.).

La conversión del programa heredado es una gran oportunidad en muchas áreas, especialmente gobierno, finanzas, manufactura, etc. Hay programas de misión crítica que se ejecutan desde hace 30 años en un antiguo mainframe o mini 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 geniales. 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 del virus informático" de Peter Szor, pero era más pesado sobre las ideas de malware y no sobre la parte exacta del desmontaje.

Dependiendo de la ruta que tome, necesitará un fondo en otras cosas, pero conocer el ensamblaje va a ser su habilidad más importante. No solo desde el punto de vista de "Yo entiendo lo que hace ese código en su mayoría", usted debería ser capaz de escribir cosas desde cero y comprender exactamente qué hace un bit dado de código y comprender otras formas en que podría escribirse el mismo código. El ensamblaje (codificación) implica encontrar una solución a un problema y codificarlo. El desmontaje implica descubrir cuál de muchas soluciones diferentes se utilizó inicialmente para resolver el problema - MUCHO más difícil;)

+1

+1 para ilustrar los diversos campos que puede visitar. Comencé a aprender la desprotección ya que el malware era un concepto desconocido en aquel entonces. Intente mejorar el Bloc de notas o la Calculadora a través de los códigos ASM, esa es una buena manera de comenzar a aprender a sentir el código :) – anonymous

2

Uno de los mayores el uso potencial de lo que veo es proyecto como la samba (http://www.samba.org/)

hay siempre va a ser cerrado sistemas propietarios como estos y siempre necesitan ingenieros para revertir estas para que otros puedan utilizarlo también.

5

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 muy seguro de los virus). Para artículos sobre ingeniería inversa como se usa en el campo de la seguridad, visita www.openrce.org.

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

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

La versión gratuita de IDA Pro 4.9 es un excelente desensamblador. Detecta las bibliotecas del sistema para que no pierda el tiempo buscando sitios equivocados :) Junto con una depurador como OllyDbg, está listo para hacer frente a la mayoría de los proyectos de reversión para Win32.

Si avanzas por la ruta Win32, eventualmente necesitarás entender la estructura PE, tal vez desempacar y demás, pero la clave ahora es comprender el ensamblaje x86. El código desensamblado para las aplicaciones Win32 es relativamente fácil de entender si ha hecho la codificación API Win32 en idiomas como C.

Para comprender mejor el ensamblaje de 32 bits, desmonte sus propias aplicaciones y vea cómo su código fuente corresponde al desmontaje salida o aprenda cómo codificar las aplicaciones API Win32 con lenguaje ensamblador a través del Iczelion's Win32 Assembly tutorials.

3

El actual mantenedor de FFMpeg obtuvo sus códecs de inicio de video de ingeniería inversa para poder hacer que los videos funcionen en Linux. Su blog es bastante interesante y tenía un recent post hablando de un libro que desearía tener cuando comenzó.

2

Hay un libro de marcha atrás: Secretos de ingeniería inversa escrito por Eldad Eilam; Elliot Chikofsky mybe atento cuatro que

+0

¡Buen nombre, ese libro es increíble! – Elliott

0

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