Reversing, Ingeniería Inversa

La capacidad de invertir el proceso de compilado de un código fuente, siendo capaz de convertir un conjunto de números binarios en código fuente entendible por una persona con conocimientos de programación, sin más herramientas que la vista, es sin duda una gran cualidad que diferencia a los profesionales entre sí.

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
razonamiento sobre cada problema y en cada caso.

Escritor
Colección
Seguridad Informática
Materia
Seguridad informática
Idioma
  • Castellano
EAN
9788499647067
ISBN
978-84-9964-706-7
Depósito legal
M-7518-2017
Páginas
370
Ancho
17 cm
Alto
24 cm
Peso
600 g
Edición
1
Fecha publicación
06-06-2017
Edición en papel
30,90 €
532,37 MX$32,12 US$
También disponible en

Índice de contenido

SOBRE EL AUTOR
INTRODUCCIÓN
CAPÍTULO 1. INTRODUCCIÓN A LA INGENIERÍA INVERSA
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
CAPÍTULO 2. COMPILADORES
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
CAPÍTULO 3. RECONSTRUCCIÓN DE CÓDIGO I.
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
CAPÍTULO 4. RECONSTRUCCIÓN DE CÓDIGO II.
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
CAPÍTULO 5. FORMATOS DE FICHEROS BINARIOS
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
CAPÍTULO 6. ANÁLISIS ESTÁTICO: DESENSAMBLADORES Y RECONSTRUCTORES DE CÓDIGO
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
CAPÍTULO 7. ANÁLISIS DINÁMICO: DEPURADORES DE CÓDIGO
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
CAPÍTULO 8. APLICACIONES PRÁCTICAS
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

Libros relacionados