Cómo empezar a aprender sobre ingeniería inversa

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

¿Ingeniería inversa de software? ¿Ingeniería inversa del controlador del dispositivo? ¿Ingeniería inversa del circuito integrado? ¿Un motor mecánico de ingeniería inversa?

La respuesta a su pregunta dependerá de cuál es el objetivo que desea revertir. Consideraré que te refieres a la ingeniería inversa de software.

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

  • La arquitectura del procesador en la que se ejecuta el 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.

La primera, la Arquitectura del procesador, es la más importante, ya que cuando se trata de un software de código cerrado, se está trabajando en el código generado por la máquina que fue el resultado del compilador del idioma en el que se escribió el software. Cuanto más sepa sobre el procesador, más fácil podrá 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 inversión.

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, es muy probable que necesite conocer las tablas que apuntan a las diferentes módulos importados / exportados que el software necesita para ejecutarse de la forma 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 facilitaría ir directamente a analizar partes específicas del código, en lugar de perder mucho tiempo repasando cada instrucción.

Por eso, Reverse Engineering no tiene un libro que te enseñe a seguir algunos pasos y podrás revertir 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.

Recomiendo los siguientes libros como lecturas adicionales sobre algunos trucos de inversión / anti-trucos:

Invertir: Secretos de la ingeniería inversa: Eldad Eilam: 8601300478531: Amazon.com: Libros

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