Ingeniería inversa para principiantes (libro gratuito)

¿Por qué uno debe aprender el lenguaje ensamblador en estos días? A menos que seas desarrollador de sistemas operativos, es probable que no necesites escribir nunca en ensamblador: los compiladores modernos realizan optimizaciones mucho mejor de lo que lo hacen los humanos. Además, las CPUs modernas son dispositivos muy complejos y saber ensamblador no te dará un conocimiento exacto de su funcionamiento interno.

Sin embargo, hay al menos dos áreas en las que un buen conocimiento de ensamblador podría ayudarte: Primero, el análisis de malware/seguridad. Segundo, obtener una mejor comprensión de tu código compilado mientras lo depuras.

Ingeniería inversa para principiantes (en inglés 'Reverse Engineering for Beginners') es un libro gratuito de Dennis Yurichev dirigido a todos aquellos que quieran aprender a entender el código x86 (que representa la mayor parte de ejecutables en el mundo del software) y ARM creado por compiladores C/C++.


Muy, muy recomendable!!

Descarga del libro: http://beginners.re/RE_for_beginners-en.pdf

6 comentarios :

  1. qué buena pinta tiene el libro! muchas gracias!

    ResponderEliminar
  2. A tu frase "los compiladores modernos realizan optimizaciones mucho mejor de lo que lo hacen los humanos" debo decir que no estoy nada de acuerdo. Un compilador generaliza mucho, no optimiza casi nada. Si un programador escribe algo en ensamblador, salvo que sea muy malo, va a crear un código más optimizado.
    Es mi opinión y lo único que pretendo es crear plémica "sana". Un saludo a todos.

    ResponderEliminar
    Respuestas
    1. amo las polémicas "sanas" :) aunque la frase realmente es de Dennis...
      en mi opinión como casi siempre no todo es blanco o negro... es decir, normalmente cuando mayor es el tamaño y la complejidad del código menor es la capacidad de optimización de un humano, pero por otro lado los compiladores no son perfectos y no pueden afrontar problemas como el halting y otros..

      Eliminar
    2. Completamente deacuerdo con anonimo.
      El compilador no puede entender las premisas del codigo, si haces por ejemplo una convolucion de un fliltro fir, el compilador no entiende que estas haciendo una convolucion, un programador en ensamblador podria utilizar la instruccion en ensamblador para procesadores x86 que te ejecuta 8 convoluciones en un solo ciclo.

      Eliminar
    3. Totalmente de acuerdo con tigo anonimo u.u ademas fueron los humanos los que crearon los compiladores modernos

      Eliminar
  3. Que ganas de leer ese libro! Se ve buenísimo, gracias! Les dejo como aporte el artículo que me hizo interesarme en este maravilloso tema https://zarza.com/ingenieria-inversa-la-gallina-o-el-huevo/ espero les sirva tanto como a mi!
    Gracias!

    ResponderEliminar