hackplayers: "Reverse Engineering for Beginners" - ebook gratuito de 900 páginas para reversers principiantes
Uno podría preguntarse por qué es necesario que haya diferencias entre el código máquina y un lenguaje de programación.
La respuesta radica en el hecho de que los seres humanos y las CPUs no se parecen - es mucho más fácil para los seres humanos utilizar un lenguaje de alto nivel como C/C++, Java, Python, etc., pero es más fácil para una CPU usar un nivel mucho más bajo de abstracción.
Tal vez fuera posible inventar una CPU que pueda ejecutar código de un lenguaje de programación de alto nivel, pero sería mucho más compleja de la CPU que conocemos hoy. De un modo parecido, es muy incómodo para los seres humanos escribir en lenguaje ensamblador debido a que es de bajo nivel y difícil de escribir sin cometer un gran número de molestos errores. El programa que convierte el código de alto nivel en ensamblador se denomina compilador
Uno podría preguntarse por qué es necesario que haya diferencias entre el código máquina y un lenguaje de programación.
La respuesta radica en el hecho de que los seres humanos y las CPUs no se parecen - es mucho más fácil para los seres humanos utilizar un lenguaje de alto nivel como C/C++, Java, Python, etc., pero es más fácil para una CPU usar un nivel mucho más bajo de abstracción.
Tal vez fuera posible inventar una CPU que pueda ejecutar código de un lenguaje de programación de alto nivel, pero sería mucho más compleja de la CPU que conocemos hoy. De un modo parecido, es muy incómodo para los seres humanos escribir en lenguaje ensamblador debido a que es de bajo nivel y difícil de escribir sin cometer un gran número de molestos errores. El programa que convierte el código de alto nivel en ensamblador se denomina compilador
El texto de arriba es un fragmento traducido de "Reverse Engineering for Beginners", también conocido como RE4B, un libro escrito por Dennis Yurichev (yurichev.com) para todo aquel que quiera introducirse en la ingeniería inversa del software. Una obra impresionante que cubre desde los fundamentos más importantes hasta los más avanzados y que incluye multitud de ejemplos con distintos lenguajes y para distintas arquitecturas.
Además es gratuita bajo licencia Creative Commons Attribution-NonCommercial-NoDerivs 3.0.
Contenidos:
Temas en profundidad: x86/x64, ARM/ARM64, MIPS, Java/JVM.
Temas tratados: Oracle RDBMS, Itanium, copy-protection dongles, LD_PRELOAD, stack overflow, ELF, win32 PE file format, x86-64, critical sections, syscalls, TLS, position-independent code (PIC), profile-guided optimization, C++ STL, OpenMP, win32 SEH.
Por el momento tenéis la versión en inglés, ruso y coreano. Si alguno está interesado en contribuir y traducirlo al castellano comentar la entrada para una posible colaboración.
Descarga versión completa en inglés:
A4 para lectura e impresión
A5 para ebooks
Existe también una versión reducida, aproximadamente 6 veces más pequeña (~150 páginas) para todos los que quieran tener una rápida introducción a la ingeniería inversa. Ésta no contiene nada sobre MIPS, ARM, OllyDBG, GCC, GDB, IDA, no tiene ejercicios, ejemplos, etc.
Sitio web del libro: "Reverse Engineering for Beginners" free book
No hay comentarios:
Publicar un comentario