Quiero aprender ingeniería inversa. ¿Qué libros debo leer para convertirme en profesional, comenzando como principiante?

¿Qué tipo de ingeniería inversa quieres lograr?

Ingeniería inversa de software? ¿Ingeniería inversa del controlador de dispositivo? ¿Ingeniería inversa del firmware del circuito integrado? ¿Una ingeniería mecánica inversa del motor?

La respuesta a su pregunta dependerá de cuál sea el objetivo que desea revertir.

Consideraré que te referías a Ingeniería inversa de software.

Para comenzar su camino en Ingeniería inversa de software, deberá tener una sólida base de comprensión de los siguientes temas:

  • La arquitectura del procesador en la que se ejecuta su software de destino.
  • El compilador con el que se compiló el software de destino.
  • La estructura de imagen ejecutable de su archivo ejecutable de destino.
  • Los idiomas en los que se escribió el software de destino.

El primero, la Arquitectura del procesador, es el más importante, ya que cuando se trata de un software de código cerrado, está trabajando en el código generado por la máquina que fue el resultado del compilador del lenguaje en el que se escribió el software. Cuanto más sepa sobre el procesador, más fácil será manejar, interceptar y analizar el código.

Además, el conocimiento del compilador es demasiado importante para algunas técnicas anti-desmontaje que podrían ser un obstáculo (difícil) en su viaje de marcha atrás.

El conocimiento del formato de archivo ejecutable del sistema operativo en el que se ejecuta su objetivo también es un aspecto importante, que revela un tesoro de información sobre el archivo que se está ejecutando, por ejemplo, lo más probable es que necesite saber las tablas que apuntan a los diferentes módulos importados / exportados que el software necesita para ejecutarse de la manera prevista, o la lista de funciones que se utilizan en el archivo ejecutable.

Finalmente, a veces, si sabía en qué idioma estaba escrito el software, le será más fácil ir directamente a analizar partes específicas del código, en lugar de perder mucho tiempo en seguir cada instrucción.

Por lo tanto, Reverse Engineering no tiene un libro que le enseñe a seguir algunos pasos y podrá revertir con éxito un software / archivo específico. Como puede ver, depende en gran medida de su comprensión del entorno en el que se ejecuta el archivo ejecutable.

Sugiero fuertemente los siguientes libros como lecturas adicionales sobre algunos trucos reversibles / antitricks:

Inversión: Secretos de ingeniería inversa: Eldad Eilam: 8601300478531: Amazon.com: Libros

Análisis práctico de malware: la guía práctica para diseccionar software malicioso: Michael Sikorski, Andrew Honig: 8601400885581: Amazon.com: Libros

No son exactamente libros , pero he escrito varios artículos para la prensa informática sobre ingeniería inversa, análisis de malware y programación de bajo nivel. Ha sido publicado en mi sitio web de forma gratuita. Puede aprender mucho de él con respecto a la ingeniería inversa, muchos ejemplos de análisis de ejecutables C / C ++, métodos, herramientas, códigos fuente

  • Cómo escribir un CrackMe para una competencia CTF
  • Revisión de herramientas de ingeniería inversa
  • Algoritmos de cifrado polimórfico
  • Malware vs software antivirus
  • Interceptar llamadas de bibliotecas DLL
  • Cuándo y cómo usar un ensamblador. Conceptos básicos de programación de ensamblajes
  • Cómo hacer la vida de cracker más difícil. Protecciones antipiratería para programadores
  • Código de Destrucción – Análisis de Malware

Diviértete, si tienes alguna pregunta siempre puedes enviarme un correo 🙂