Índice de la Guía Definitiva de IDA Pro
Parte 1 Introducción a IDA
Capítulo 1 Introducción al desmontaje 2
1.1 Teoría del desmontaje 2
1.2 ¿Qué es el desmontaje 3? p>
1.3 Por qué desmontar 3
1.3.1 Analizar malware 4
1.3.2 Análisis de vulnerabilidad 4
1.3.3 Interoperabilidad del software 4 p>
1.3.4 Verificación del compilador 4
1.3.5 Mostrar información de depuración 5
1.4 Cómo desmontar 5
1.4.1 Algoritmo básico de desmontaje 5
1.4.2 Desmontaje de escaneo lineal 6
1.4.3 Desmontaje de descenso recursivo 7
1.5 Resumen 10
Capítulo 2 Inversa y Herramientas de desmontaje 11
2.1 Herramientas de clasificación 11
2.1.1 archivo 11
2.1.2 Herramientas PE 13
2.1.3 PEiD 14
2.2 Herramientas de resumen 14
2.2.1 nm 15
2.2.2 ldd 16
2.2.3 Objdump 17 p>
2.2.4 otool 18
2.2.5 dumpbin 18
2.2.6 c++filt 19
2.3 Herramientas de detección de profundidad 20
2.3.1 cadenas 20
2.3.2 Desensamblador 21
2.4 Resumen 22 p>
Capítulo 3 Conocimientos previos de IDA Pro 23
3.1 Estrategia antipiratería de la empresa Hex-Rays 23
3.2 Obtención de IDA Pro 24
3.2 .1 IDA versión 24
3.2.2 IDA licencia 24
3.2.3 Comprar IDA 25
3.2.4 Actualizar IDA 25
3.3 Recursos de soporte de IDA 25
3.4 Instalar IDA 26
3.4.1 Instalación de Windows 26
3.4.2 Instalación de OS X y Linux 27
3.4.3 Estructura de directorios IDA 28
3.5 Interfaz de usuario de IDA 29
3.6 Resumen 29
Parte 2 Uso básico de IDA
Capítulo 4 Introducción a IDA 32
4.1 Iniciar IDA 32
4.1.1 Cargar archivos IDA 34
4.1.2 Usar el cargador de archivos binarios 35
4.2 Archivo de base de datos IDA 37
4.2.1 Crear base de datos IDA 38
4.2.2 Cerrar base de datos IDA 38
4.2.3. Reabrir la base de datos 39
4.3 Introducción a IDA escritorio 40
4.4 Comportamiento del escritorio durante el análisis inicial 42
4.5 Consejos y trucos de IDA para el escritorio 43
4.6 Informar de un error 44
4.7 Resumen 44
Capítulo 5 Ventana de visualización de datos de IDA 45
5.1 Ventana de visualización de datos principal de IDA 45
5.1.1 Ventana de desmontaje 45
5.1 .2 Ventana de nombres 50
5.1.3 Ventana de mensajes 51
5.1.4 Ventana de cadenas 52
5.2 Ventana de visualización de IDA secundaria 53
5.2.1 Ventana hexadecimal 53
5.2.2 Ventana Exportar 54
5.2.3 Ventana Importar 54
5.2.4 Ventana Función
55
5.2.5 Ventana de estructura 55
5.2.6 Ventana de enumeración 56
5.3 Otras ventanas de visualización de IDA 56
5.3 .1 Ventana de segmento 56
5.3.2 Ventana de firma 57
5.3.3 Ventana de biblioteca de tipos 58
5.3.4 Ventana de llamada de función 58
5.3.5 Ventana de problemas 59
5.4 Resumen 59
Capítulo 6 Navegación de desmontaje 60
6.1 Navegación IDA básica 60
6.1. 1 Navegación con doble clic 60
6.1.2 Saltar a dirección 62
6.1.3 Historial de navegación 62
6.2 Marco de pila 63 p>
6.2.1 Convención de llamada 64
6.2.2 Diseño de variable local 67
6.2.3 Ejemplo de marco de pila 67
6.2.4 Vista de pila IDA 70
6.3 Búsqueda en base de datos 74
6.3.1 Búsqueda de texto 75
6.3.2 Búsqueda binaria 75
6.4 Resumen 76
Capítulo 7 Operación de desmontaje 77
7.1 Nombres y denominaciones 77
7.1.1 Parámetros y variables locales 77
7.1. Ubicaciones con nombre 79<. /p>
7.1.3 Nombres de registros 80
7.2 Comentarios en IDA 80
7.2.1 Comentarios generales 82
7.2.2 Comentarios repetibles 82
7.2.3 Comentarios antes y después 82
7.2.4 Comentarios de función 82
7.3 Conversión de código básico 83
7.3.1 Opciones de visualización de código 83
7.3.2 Formato de operandos de instrucción 85
7.3.3 Funciones de manipulación 86
7.3.4 Conversión entre datos y código 91
7.4 Conversión de datos básicos 91
7.4.1 Especificar el tamaño de los datos 92
7.4.2 Procesar cadenas 93
7.4.3 Especificar matrices 94
7.5 Resumen 96
Capítulo 8 Tipos de datos y estructuras de datos 97
8.1 Identificación de datos Uso de estructuras 98
8.1.1 Miembro de la matriz acceso 98
8.1.2 Acceso a miembros de estructura 102
8.2 Creación de estructuras IDA 107
8.3 Uso de plantillas de estructura 111
8.4 Importación de nuevos estructuras 114
8.4.1 Análisis de declaraciones de estructuras C 114
8.4.2 Análisis de archivos de encabezado C 115
8.5 Uso de estructuras estándar 115
8.6 Archivos IDA TIL 118
8.6.1 Carga de nuevos archivos TIL 118
8.6.2 ***Compartir archivos TIL 118
8.7 Conceptos básicos de C++ inverso ingeniería 119
8.7.1 este puntero 119
8.7.2 Funciones virtuales y tablas virtuales 120
8.7.3 Ciclo de vida del objeto 122
8.7.4 Adaptación de nombre 124
8.7.5 Identificación del tipo de tiempo de ejecución 125
8.7.6 Relación de herencia 126
8.7.7 Referencia de ingeniería inversa de C++ 127
8.8 Resumen 127
Capítulo 9 Referencia cruzada y función de dibujo 128
9.1 Referencia cruzada 128
9.1.1 Cruz de código -referencia 129
9.1.2 Referencia cruzada de datos 131
9.1.3 columna de referencia cruzada
Tabla 133
9.1.4 Llamada a función 134
9.2 Dibujo IDA 135
9.2.1 Función de dibujo heredado IDA 135
9.2. 2 Vista gráfica integrada de IDA 141
9.3 Resumen 143
Capítulo 10 Las diversas caras de IDA 144
10.1 Modo consola IDA 144
10.1.1 Las mismas características en modo consola 144
10.1.2 Consola Windows 145
10.1.3 Consola Linux 146
10.1.4 OS
Parte 3 Aplicación avanzada de IDA
Capítulo 11 Personalización de IDA 154
11.1 Archivo de configuración 154
11.1.1 Archivo de configuración principal :ida.cfg 154
11.1.2 Archivo de configuración de GUI: idagui.cfg 155
11.1.3 Archivo de configuración de consola: idatui.cfg 157
11.2 Otras opciones de configuración de IDA 158
11.2.1 Color IDA 159
11.2.2 Personalización de la barra de herramientas IDA 159
11.3 Resumen 161
Capítulo 12 Uso de firmas FLIRT para identificar bibliotecas 162
12.1 Técnicas rápidas de identificación y autenticación de bibliotecas 162
12.2 Aplicar firmas FLIRT 163
12.3 Crear archivos de firma FLIRT 166
12.3.1 Descripción general de la creación de firmas 166
12.3.2 Identificación y obtención de bibliotecas estáticas 167
12.3.3 Creación de archivos de esquema 168
12.3.4 Creación archivos de firmas 169
12.3.5 Iniciar firmas 171
12.4 Resumen 172
Capítulo 13 Ampliar el conocimiento de IDA 173
13.1 Información de funciones ampliada 173
13.1.1 Archivo IDS 175
13.1.2 Crear archivo IDS 176
13.2 Usar loadint para expandir comentarios predefinidos 178
13.3 Resumen 179
Capítulo 14 Parchear binarios y otras limitaciones de IDA 180
14.1 Menú de parches ocultos 180
14.1 .1 Cambiar bytes de base de datos 181
14.1.2 Cambiar palabras en la base de datos 181
14.1.3 Usar el cuadro de diálogo "Ensamblar" 182
14.2 Archivo de salida IDA y generación de parches 183
14.2.1 Archivo MAP generado por IDA 183
14.2.2 Archivo ASM generado por IDA 184
14.2.3 Generado por IDA INC archivo 184
14.2. 4 Archivo LST generado por IDA 185
14.2.5 Archivo EXE generado por IDA 185
14.2.6 Archivo DIF generado por IDA 185
14.2.7 HTML archivos generados por IDA 186
14.3 Resumen 186
Parte 4: Ampliación de las funciones de IDA
Capítulo 15 Capítulo Escritura de scripts IDC 188
15.1 Conocimientos básicos de ejecución de scripts 188
15.2 Lenguaje IDC 189
15.2.1 Variables IDC 190
>15.2.2 Expresión IDC 190
15.2.3 Declaración IDC 190
15.2.4 Función IDC 191
15.2.5 Programa IDC 192
15.2.6 Manejo de errores IDC 192
15.2.7 Almacenamiento permanente de datos IDC 193
15.3 Asociación de scripts IDC y teclas de acceso rápido 194
15.4 Funciones útiles de IDC 195
15.4.1 Funciones de lectura y modificación de datos 196
15.4.2 Funciones de interacción con el usuario 196
15.4.3 Funciones de manipulación de cadenas 197
15.4.4 Funciones de entrada/salida de archivos 197
15.4.5 Manipulación de nombres de bases de datos 198
15.4.6 Funciones de procesamiento 199
15.4.7 Código función de referencia cruzada 199
15.4.8 Función de referencia cruzada de datos 200
15.4.9 Función de manipulación de base de datos 200
15.4.10 Función de búsqueda de base de datos 201
15.4.11 Componente de línea de desmontaje 201
15.5 Ejemplo de script IDC 202
15.5.1 Función de enumeración 202
15.5.2 Instrucciones de enumeración 202
15.5.3 Referencia cruzada de enumeración 203
15.5.4 Enumeración de funciones exportadas 205
15.5.5 Búsqueda y marcado de parámetros de funciones 206
15.5.6 Simulación del comportamiento del lenguaje ensamblador 208
15.6 Resumen 209
Capítulo 16 Kit de desarrollo de software IDA 211
16.1 Introducción al SDK 212 p>
16.1.1 Instalación del SDK 212
16.1.2 Diseño del SDK 212
16.1.3 Configuración del entorno de compilación 213
16.2 Aplicación IDA Interfaz de programación 214
16.2.1 Descripción general del archivo de encabezado 214
16.2.2 Nodo de red 217
16.2.3 Tipos de datos útiles del SDK 223
16.2.4 Funciones SDK de uso común 224
16.2.5 Habilidades de iteración de API de IDA 229
16.3 Resumen 232
Capítulo 17 Arquitectura del complemento IDA 233
17.1 Escritura de complementos 233
17.1.1 Ciclo de vida del complemento 235
17.1.2 Inicialización del complemento 236
p>17.1.3 Notificación de eventos 237
17.1.4 Ejecución del complemento 238
17.2 Creación del complemento 239
17.3 Instalación del complemento 243
17.4 Configuración del complemento 244
17.5 Ampliación de IDC 244
17.6 Opciones de la interfaz de usuario del complemento 247
17.7 Resumen 254
Capítulo 18 Capítulo Archivos binarios y módulo cargador IDA 255
18.1 Análisis de archivos desconocidos 256
18.2 Carga manual de un archivo de Windows PE 256
18.3 Módulo cargador IDA 263
18.4 Escribir un cargador IDA 263
18.4.1 Cargador “estilo tonto” 265
18.4.2 Construir un módulo cargador IDA 269
18.4.3 Cargador IDA pcap 269
18.5 Otras estrategias de carga 274
18.6 Resumen 275
Capítulo 19 Módulo de procesador IDA 276
19.1
Código de bytes de Python 277
19.2 Intérprete de Python 277
19.3 Módulo de procesador de escritura 277
19.3.1 estructura procesador_t 278
19.3.2 Básico inicialización de la estructura LPH 278
19.3.3 Analizador 282
19.3.4 Simulador 286
19.3.5 Exportador 288
19.3. 6 Notificación del procesador 293
19.3.7 Otros miembros de Process_t 294
19.4 Creación del módulo del procesador 296
19.5 Personalización de procesadores existentes 299
19.6 Arquitectura del módulo de procesador 301
19.7 Resumen 302
Parte 5 Aplicaciones prácticas
Capítulo Capítulo 20 Variaciones del compilador 304
20.1 Tabla de salto y rama Declaración 304
20.2 Implementación de RTTI 308
20.3 Localización de la función principal 308
20.4 Depuración y liberación de binarios 315
20.5 Otras convenciones de llamada 317
20.6 Resumen 317
Capítulo 21 Análisis de código difuso 319
21.1 Técnicas de análisis antiestático 319
21.1.1 Desmontaje y desincronización 319
21.1.2 Cálculo dinámico de la dirección de destino 322
21.1.3 Desenfoque de función importada 327
21.1.4 Herramientas de análisis de ataques dirigidos 331
21.2 Técnicas de análisis antidinámico 331
21.2.1 Detección de virtualización 331
21.2.2 Detección de "herramientas de detección" 333
21.2. 3 Detección de depuradores 333
21.2.4 Prevención de la depuración 334
21.3 Utilice IDA para "desenfocar estáticamente" archivos binarios 335
21.3.1 Desenfoque orientado a scripts 335
21.3.2 Desenfoque orientado a la simulación 339
21.4 Resumen 349
Capítulo 22 Análisis de vulnerabilidad 350
22.1 Utilice IDA para descubrir nuevos vulnerabilidades 351
22.2 Utilice IDA para descubrir vulnerabilidades después del hecho 356 p>
22.3 IDA y proceso de desarrollo del programa de craqueo 359
22.3.1 Detalles del marco de pila 360 p>
22.3.2 Secuencia de instrucciones de posicionamiento 362
22.3. 3. Encontrar direcciones virtuales útiles 363
22.4 Analizar shellcode 364
22.5 Resumen 366
Capítulo 23 Complementos IDA prácticos 367
23.1 Hex-Rays 367
23.2 IDAPython 368
23.3 IDARub 371
23.4 IDA Sync 371
23.5 collabREate 374
23.6 ida-x86emu 377
23.7 mIDA 377
23.8 Resumen 379
Parte 6 Depurador IDA
Capítulo 24 Depurador IDA 382
24.1 Iniciar el depurador 382
24.2 Visualización básica del depurador 384 p>
24.3 Control de procesos 387
24.3. 1. Punto de interrupción 388
24.3.2 Seguimiento 390
24.3.3 Seguimiento de pila 393
24.3.4 Monitorear 393
<p>24.4 Automatizar tareas del depurador 393
24.4.1 Usar IDC para escribir scripts para operaciones del depurador 394
24.4.2 Usar complementos IDA para automatizar operaciones del depurador 398
24.5 Resumen 400
Capítulo 25 Integración del desensamblador/depurador 401
25.1 Conocimientos previos 401
25.2 Base de datos IDA y depurador IDA 402
25.3 Depuración de código ofuscado 404
25.3.1 Bucle simple de descifrado y descompresión 404
25.3.2 Reconstrucción de tabla de importación 407
25.3.3 Ocultar el depurador 410
25.3.4 Manejo de excepciones 414
25.4 Resumen 418
Capítulo 26 IDA y depuración remota en plataformas Linux y OS X 419
26.1 Depuración en modo consola 419
26.2 Uso de IDA para depuración remota 420
26.2.1 Manejo de excepciones en depuración remota 422
26.2.2 Uso de scripts y complementos en la depuración remota 423
26.3 Resumen 423
Apéndice A Uso de IDA 4.9 Edición gratuita 424
Apéndice B Referencia cruzada de IDC/SDK 426
Apéndice C Nuevas características de IDA 5.3 444