Colección de citas famosas - Slogan de motivación - Título de seguridad del software de Android y análisis inverso

Título de seguridad del software de Android y análisis inverso

Este libro explica paso a paso la seguridad del software, el análisis inverso y la tecnología de cifrado y descifrado del sistema Android. Incluyendo los conocimientos y conceptos necesarios sobre el análisis inverso del software de Android y la seguridad del sistema, cómo analizar estáticamente el software de Android, cómo depurar dinámicamente el software de Android, discusión sobre la tecnología anti-craqueo y craqueo del software de Android y un análisis integral de los virus típicos de Android.

Este libro es adecuado para que lo lean y estudien todos los desarrolladores de aplicaciones de Android, ingenieros de desarrollo de sistemas Android y trabajadores de seguridad del sistema Android. Feng Shengqiang (nombre de usuario Feichong)

Experto en seguridad de software Android. El moderador de la versión de seguridad de Android del Foro Kanxue; el moderador de la versión de intercambio de desarrollo del bus de Android.

Tiene un pasatiempo fanático y conocimientos únicos sobre el software y la seguridad del sistema Android, y ha realizado investigaciones y análisis en profundidad de todos los códigos fuente del sistema Android. Rica experiencia en análisis inverso.

Publicó muchos artículos valiosos sobre seguridad de software en revistas nacionales de seguridad de la información. Actualmente, trabajo para una empresa de desarrollo de Android en China y participo en el Foro Xue (id es Feichong) durante todo el año.

Correo electrónico del autor: fei_cong@hotmail.com

Estamos dispuestos a comunicarnos y discutir tecnología de seguridad con entusiastas de la seguridad nacional. Capítulo 65438 +0 Cree un entorno de análisis de programas de Android 1 1 Entorno de análisis de Windows 1 1 1 1 Instalar JDK 1 1.2 Instalar Android SDK 3 65438+ 0.2.3 Instalar Android NDK 5 1.1.4 Entorno de desarrollo integrado Eclipse 6 1.5 Instalar CDT. Complemento ADT 6 1.6 Crear dispositivo virtual Android 8 1.1.7 Herramientas utilizadas 9 1.2 Crear entorno de análisis Linux 9 65438K 9 1.2.3 Instalar Android SDK 10 1.2.4 Instalar Android NDK 11 1.2.5 Instalar el entorno de desarrollo integrado Eclipse en Ubuntu 12 1.2. 6 Instale el complemento CDT, ADT en Ubuntu 13 1.2.7 Herramientas para crear dispositivos virtuales Android 13 1.2.8 1.3 Resumen de este capítulo 15 ¿Cómo analizar el programa de Android en el Capítulo 2 16 2.1? Escribir el primer programa de Android 16 2.1.1 Crear un proyecto de Android con Eclipse 16 2.1.2 Compilar y generar un archivo APK 19 2.2 ¿Cómo descifrar el primer programa 20 2.2.1 20 2.2.2 Descompilar el archivo APK 20 2.2.3 Análisis del archivo APK 21 2.2.4 Modificar el código del archivo Smali 26 2.2.5 Recompilar el archivo APK y firmarlo 26 2.2.6 Prueba de instalación 27 2.3 Resumen de este capítulo 28 Capítulo 3 Ingresando a la máquina virtual Android Dalvik 29 3.1. Características de la máquina virtual Dalvik: dominar los principios operativos de los programas de Android 29 3.1.1 Descripción general de la máquina virtual Dalvik 29 3.1.2 La diferencia entre la máquina virtual Dalvik y la máquina virtual Java 29 3.1.3 ¿Cómo es la máquina virtual Dalvik? Programa de ejecución 34 3.1.4 Acerca de D JIT (compilación justo a tiempo) de la máquina virtual Alvik 36 3.2 Método Dalvik 42 3.2.5 Tipo de código de bytes, método y método de representación de campo de Dalvik 43 3.3 Conjunto de instrucciones Dalvik 44 3.3 .1 Características de la instrucción 45 3.3.2 Instrucción de no operación 45 3.3.3 Instrucción de operación de datos 46 3.3.4 Instrucción de devolución 46 3.3.5 Instrucción de definición de datos 46 3.3.6 Instrucción de bloqueo 47 3.3.7 Instrucción de operación de instancia 47 3.3.

Secuencia 48 3.3.9 Instrucción de excepción 48 3.3.10 Instrucción de salto 48 3.3.11 Instrucción de comparación 49 3.3.12 Instrucción de operación de campo 50 3.3.13 Instrucción de llamada de método 50 3. 3. 6538. 6543406406 8+05 Instrucción de operación de datos 51 3.4 Dalvik instrucciones 66 4. 3. 1 Estructura de datos en el archivo DEX 66 4.3.2 Estructura general del archivo dex 68 4.3.3 Análisis de la estructura del archivo dex 71 4.4 Formato del archivo DEX. 80 4.4.1 Cómo generar archivos odex 80 4. 4. 2 La estructura general de los archivos ODEX 81 4. 4. 3 Análisis estructural de los archivos ODEX 83 4.5 El proceso de trabajo de las herramientas de optimización y verificación de archivos DEX 88 4.6 Métodos alternativos de craqueo para Aplicaciones de Android 91 4.7 Resumen de este capítulo 93. Capítulo 5 Análisis estático de programas de Android 94 5.1 ¿Qué es el análisis estático 94 5.2 Localizar rápidamente códigos clave de programas de Android 94 5.2.1 Descompilar el programa apk 94 5.2.2 Principales actividades del programa 95 5.2 .3 ¿Cómo localizar aplicaciones Clase 95.2.4? Código clave: seis métodos 96 5.3 Formato de archivo de Mali 97 5.4 Clases en programas de Android 100 5.4.1 Clases internas 100 5.4.2 Oyentes 102 5.4.3 Clases de anotaciones 105 5.4.4 Generar clases automáticamente. Lectura de código pequeño descompilado 110 5.5.1 Declaración de bucle 10 5.5.2 Declaración de rama de cambio 115 5.5.3 Declaración try/Catch 121 5.6 Análisis estático del programa Android 127 5.6.1 Ejemplo de IDA 132 5.7 Kit de herramientas de análisis de malware-Androguard 135 5. 7. 1 Instalar y configurar Androguard 135 5.7.2 Usar Androguard 137 5.7.3 Usar andro guard con Gephi para análisis estático. 144 5.7.4 Utilice androlyze.py para análisis estático 148 5.8 Otras herramientas de análisis estático 152 5.9 Leer código Java descompilado 152 5.9.1 Utilice dex2jar para generar archivos jar 152 5.9.2 Uso. Ver el código fuente del archivo jar 153 5.10 Entorno de análisis integrado-Santoku 154 5.11 Resumen de este capítulo 156 Capítulo 6 Conceptos básicos del lenguaje ensamblador ARM basado en Android: ¡nativo inverso! 157 6.1 Procesadores Android y ARM 157 6.1.1 Descripción general de la arquitectura del procesador ARM 157 6.1.2 Familia de procesadores ARM 158 6.1.3 Arquitecturas de procesador compatibles con Android 65438+ 59 6.2 Programación nativa y lenguaje ensamblador ARM: inversión de su Hola ARM nativo 654388+066 6.3. 1 Ensamblador ARM completo 166 6.3.2 Definición de la arquitectura del procesador 167 6.3.3 Definición de párrafos 168 6.3.4 Comentarios y números de referencia 169 6.3.5 Instrucciones del ensamblador 65438. 6.4 Modos de direccionamiento del procesador ARM 170 6.4.1 Direccionamiento inmediato 170 6.4.2 Direccionamiento de registros 171 6.4.3 Direccionamiento por desplazamiento de registro 171 6.4.4 Direccionamiento indirecto de registro 65438. 171 6.4.6 Direccionamiento de registro múltiple 1 6.4.7 Direccionamiento de pila 172 6.4 Direccionamiento de copia de 8 bloques 172 6.4.9 Direccionamiento relativo 172 6.5 Conjunto de instrucciones ARM y Thumb. 65. Formato 173 6.5.2 Instrucciones de salto 174 6.5.3 Instrucciones de acceso a memoria 175 6.5.4 Instrucciones de procesamiento de datos 177 6.5.5 Otras instrucciones 184 6.6 Conjunto de instrucciones Neon y VFP para programación multimedia y cálculos de punto flotante 65438+. 5438+086 Capítulo 7 Análisis inverso de programas NDK de Android 187 7.1 Programas nativos en Android 187 7.1 Escribir un programa de muestra 187 7.1.2 Cómo compilar programas nativos 188 7.

194 7.2.1 Ejecución de la función de entrada del programa nativo 194 7.2.2 Análisis del proceso de inicio cuando la función principal 198 7.3 Formato de archivo nativo 199 7.4 Análisis inverso del programa C nativo 200 7.4.1 Programa nativo. Declaración de bucle 204 Características del código de desensamblado 7.4.3 if...else declaración de rama 208 7.4.4 código de desensamblado de declaración de bucle while 211 7.4.5 código de desensamblado de declaración de rama switch 215 7.4.6 Optimización del tiempo de compilación del programa nativo 2639.000000000006 08 7.5 Nativo inverso análisis de programas C++ 222 7.5.1 Clases de C++ 222 7.5.2 Par NDK de Android 233 7.7 Resumen de este capítulo 235 Capítulo 8 Depuración dinámica de programas de Android 236 8.1 Soporte de depuración dinámica para Android 236 8.2 Uso de DDMS 237 8.2.1 Cómo iniciar D ? DMS 237 8.2.2 Usar LogCat para ver información de depuración 238 8.3 Localizar código clave 240 8.3.1 Método de inyección de código: permita que el programa escupe su propio código de registro 240 8.3.2 Método de seguimiento de pila 244 8. 3. 3 análisis del método 247 8.4 El programa de depuración de Android 250 utiliza AndBug. 8.4.1 Instalación de AndBug 251 8.4.2 Uso de AndBug 251 8.5 Uso de IDA Pro para depurar programas nativos de Android 254 8.5.1 Depuración de programas nativos de Android 255 8.5.2 Depuración de bibliotecas de enlaces dinámicos nativos de Android 256 8.6. Gdb depuración del programa nativo de Android 260 8.6.1 Compilar gdb y gdbserver 260 8.6.2 Cómo depurar 262 8.7 Descripción general de este capítulo 264 Capítulo 9 Tecnología de descifrado de software de Android 265 9.1 Software de prueba 265 9.1 Tipo de software de prueba 265 9.1.2 Muestra de craqueo - para craqueo en modo de clave de autorización 265 9.2 Protección del número de serie 27654385.2 Ejemplo de craqueo: craqueo para el modo de licencia de Google Play 283 9.6 Reiniciar verificación 284 9.6.1 Ideas de protección de verificación de reinicio 285 9.6.2 Ejemplo de craqueo: craqueo para reiniciar el modo de verificación 285 9.7 Cómo descifrar Otros tipos de programas de Android 296 9.7.1 Programas de desarrollo Mono f o Android y sus métodos de craqueo 296 9.7.2 Programas de desarrollo Qt para Android y sus métodos de craqueo 301 9.8 Resumen de este capítulo 10.1.1 Cómo descompilar herramientas 310 10.1.2 Counter dex 2 Jar 3110.2 Análisis estático del contador 312 10.2.02 10.2.2 Protección NDK 315 10.2.3 Protección Shell 316 10.3 Prevenir la depuración dinámica 316 10.3.10 Detectar el depurador 365438+10.4 Prevenir la recompilación 363611.1 Descripción general de la seguridad del sistema Android 321 1.2 Daño causado por el teléfono móvil R OOT 321 1.2 1 ¿Por qué ROOT en teléfonos móviles 321? 2 Riesgos de seguridad causados ​​por ROOT en teléfonos móviles 322 11.2.3 Principios de ROOT en teléfonos móviles con Android 322 11.3 Ataques de permisos de Android 333 11.3. .3 Detección de ataques de permiso 336 11.4 Seguridad de componentes de Android 339 11.4.1 Demostración de seguridad de actividad y secuestro de actividad 340 165438.

Seguridad del receptor de transmisión 343 11. 4. 3 Seguridad del servicio 345 11.4.4 Seguridad del proveedor de contenido 346 11.5 Seguridad de los datos 347 11. 5. 500000006 Seguridad del almacenamiento del departamento 347 1654388+0 6. 2 Proceso de personalización de ROM 352 11.6.3 Riesgos de seguridad de la personalización. ROM 359 11.6.4 Cómo prevenir 360 11.7 Resumen de este capítulo 361 65438+5438+02.1 Introducción al virus Droid Kung Fu 362 65448369 12.3.3 Otras herramientas de análisis dinámico 373 12.4 Análisis inverso de código de virus 376 12.4.1 Inicio de la capa Java Análisis de código 376 12.4.2 Análisis del código de inicio de la capa nativa 381 12. Análisis 393 12.5 Resumen del marco del virus DroidKongFu 404 12.6 Prevención de virus 406 12.7 Resumen de este capítulo 406