El objetivo principal del libro es dotar al lector de las herramientas necesarias para poder llevar a cabo labores de ingeniería inversa por sus propios medios
y comprendiendo en cada momento lo que sucede, sin toparse con barreras técnicas a las que no pueda enfrentarse.
En esta obra el autor pone en práctica todo lo aprendido con casos reales y resueltos paso a paso, como la explotación de un fallo de seguridad, la detección de una puerta trasera y la generación de un fichero con formato válido habiendo proporcionado tan solo el binario que lo valida.
También el lector encontrará un repaso por la historia de la ingeniería inversa, teoría de compiladores, estructuras de datos y de control (x86 32 y 64 bits y
ARM), funcionamiento de los desensambladores y depuradores bajo Linux y Windows, formatos de ficheros PE y ELF, funcionamiento de cargadores
dinámicos también en Linux y Windows
El objetivo del libro sin duda, es proporcionar de recursos al lector para afrontar los diversos retos con una buena base teórica y técnica para dotarlo de CAPÍTULO 1. INTRODUCCIÓN A LA INGENIERÍA INVERSA CAPÍTULO 2. COMPILADORES CAPÍTULO 3. RECONSTRUCCIÓN DE CÓDIGO I. CAPÍTULO 4. RECONSTRUCCIÓN DE CÓDIGO II. CAPÍTULO 5. FORMATOS DE FICHEROS BINARIOS CAPÍTULO 6. ANÁLISIS ESTÁTICO: DESENSAMBLADORES Y RECONSTRUCTORES DE CÓDIGO CAPÍTULO 7. ANÁLISIS DINÁMICO: DEPURADORES DE CÓDIGO CAPÍTULO 8. APLICACIONES PRÁCTICAS
razonamiento sobre cada problema y en cada caso.
INTRODUCCIÓN
1.1 DEFINICIONES
1.2 MOTIVACIÓN
1.2.1 Descifrar algoritmos y/o especificaciones privadas
1.2.2 Agregar funcionalidades
1.2.3 Validación y verificación del software
1.2.4 Detección de vulnerabilidades
1.2.5 Análisis de malware
1.3 LIMITACIONES
1.4 ASPECTOS LEGALES
1.5 CUESTIONES RESUELTAS
1.5.1 Enunciados
1.5.2 Soluciones
2.1 TEORÍA DE COMPILADORES
2.2 FASES DE UN COMPILADOR
2.3 ANÁLISIS LÉXICO
2.3.1 Definición de términos
2.3.2 Especificación de componentes léxicos
2.3.3 Reconocimiento de componentes léxicos
2.3.4 LEX como analizador léxico
2.4 ANÁLISIS SINTÁCTICO
2.4.1 Gramáticas independientes del contexto
2.4.2 Arboles de análisis sintáctico y derivaciones
2.4.3 Analizadores sintácticos LR
2.4.4 Analizadores sintácticos LALR
2.5 ANÁLISIS SEMÁNTICO
2.6 GENERACIÓN DE CÓDIGO INTERMEDIO
2.6.1 Código de tres direcciones
2.6.2 Tipos de proposiciones de tres direcciones
2.7 GENERACIÓN DE CÓDIGO Y OPTIMIZACIONES
2.8 HERRAMIENTAS PARA LA COMPILACIÓN
2.9 CUESTIONES RESUELTAS
2.9.1 Enunciados
2.9.2 Soluciones
2.10 EJERCICIOS PROPUESTOS
ESTRUCTURAS DE DATOS
3.1 CONCEPTOS BÁSICOS SOBRE RECONSTRUCCIÓN DE CÓDIGO
3.2 VARIABLES
3.3 ARRAYS
3.4 PUNTEROS
3.5 ESTRUCTURAS
3.6 OBJETOS
3.7 CUESTIONES RESUELTAS
3.7.1 Enunciados
3.7.2 Soluciones
3.8 EJERCICIOS PROPUESTOS
ESTRUCTURAS DE CÓDIGO COMUNES
4.1 ESTRUCTURAS DE CÓDIGO
4.2 OPERADORES
4.3 CONDICIONALES Y BIFURCACIONES
4.4 FUNCIONES
4.5 CUESTIONES RESUELTAS
4.5.1 Enunciados
4.5.2 Soluciones
4.6 EJERCICIOS PROPUESTOS
Y ENLAZADORES DINÁMICOS
5.1 CONCEPTOS PRELIMINARES
5.2 BINARIOS ELF
5.2.1 Formato de ficheros
5.2.2 Cargador dinámico
5.3 FICHEROS BINARIOS PE
5.3.1 Formato de fichero
5.3.2 Cargador dinámico
5.4 CUESTIONES RESUELTAS
5.4.1 Enunciados
5.4.2 Soluciones
5.5 EJERCICIOS PROPUESTOS
6.1 CONCEPTOS INICIALES
6.2 DESENSAMBLADORES
6.2.1 Conceptos básicos
6.2.2 Herramientas disponibles
6.3 RECONSTRUCTORES DE CÓDIGO
6.3.1 Herramientas disponibles
6.3.2 Hex-Rays Decompiler
6.4 CUESTIONES RESUELTAS
6.4.1 Enunciados
6.4.2 Soluciones
6.5 EJERCICIOS PROPUESTOS
7.1 ASPECTOS GENERALES
7.2 CAJA NEGRA: ANÁLISIS DE COMPORTAMIENTO
7.2.1 Interceptación de comunicaciones
7.2.2 Monitorización de funciones del sistema
7.3 CAJA BLANCA: DEPURADORES DE CÓDIGO
7.3.1 Depuradores de código en Linux
7.3.2 Depuradores de código en Windows
7.4 CUESTIONES RESUELTAS
7.4.1 Enunciados
7.4.2 Soluciones
7.5 EJERCICIOS PROPUESTOS
8.1 PUNTO DE PARTIDA
8.2 CASO PRÁCTICO 1: ANÁLISIS DE VULNERABILIDADES
8.3 CASO PRÁCTICO 2: ANÁLISIS DE FUNCIONALIDADES OCULTAS
8.4 CASO PRÁCTICO 3: ANÁLISIS DE UN FORMATO DE FICHERO DESCONOCIDO
8.5 CUESTIONES RESUELTAS
8.5.1 Enunciados
8.5.2 Soluciones