Datos Técnicos Cracking sin Secretos. Ataque y Defensa del Software (RA-MA) Incl. CD ISBN: 9701510844 | PDF | Spanish | Coedición: Alfaomega-Rama | Páginas: 384 | March 2006 | Autor: Jakub Zemánek
Descripción Cracking no es sinónimo de violación de la protección del software, sino que constituye un método para probar la resistencia del programa frente a los posibles ataques y su posterior difusión ilegal. Resulta prácticamente imposible crear una protección inviolable, lo que no significa que todas las protecciones estén condenadas al fracaso y que no puedan cumplir su misión. El criterio con el que se suele medir el éxito de una protección radica en la cantidad de tiempo que permanece inexpugnable, lo que, a su vez, repercute en los beneficios derivados de la venta de copias legales del software correspondiente. Este libro está dirigido tanto a los profesionales como a aquellos principiantes interesados en el campo de la protección de software. La obra introduce al lector en los fundamentos del cracking y del anticracking y en algunas de las técnicas más avanzadas, y su contenido representa una gran compilación de información de casi todas las áreas que comprende esta materia: desde las descripciones de sencillos algoritmos de protección hasta la programación de codificadores PE propios. Si bien es esencial un conocimiento básico de la programación en ensamblador, no resulta imprescindible ya que todo el código mostrado forma parte de otro código realizado con lenguajes de mayor nivel. De este modo, resultará accesible incluso para quienes no sepan nada de ensamblador. Incluye un apéndice de referencia donde se describen los mandatos en ensamblador más comunes.
Con este Libro, el Lector Conocerá -Las técnicas actuales de protección y sus vulnerabilidades. -Los puntos débiles de las protecciones actuales. -Los programas y herramientas empleadas por los crackers. -Cómo depurar y defenderse de la depuración de un programa. -Cómo desensamblar y defenderse contra el desensamblaje de un programa. -Cómo usar y defenderse de los programas FrogsICE y ProcDump. -La edición del código del programa. -El formato de fichero PE y los compresores-codificadores PE como soluciones más actualizadas frente a la piratería. -El cracking como mejor método de prueba de las protecciones. -Información complementaria sobre el cracking. Se adjunta un CD-ROM que contiene todo el código de los programas incluidos en el libro y un completo paquete de software para crackers y anticrackers: codificadores-compresores PE y sus correspondientes descodificadores-descompresores (ProcDump y otros), volcadores, generadores de parches, cargadores, editores y escáneres PE, calculadoras de desplazamientos, desensambladores, depuradores, programas para ocultar los depuradores (como FrogsICE) y muchos otros programas y herramientas. También contiene materiales "crackme" para que el lector ponga en práctica los conocimientos adquiridos.
Indice PRÓLOGO.XI
CAPÍTULO 1.MÉTODOS DE PROTECCIÓN Y SUS PUNTOS DÉBILES .1CIFRADO.1 PROGRAMAS INCOMPLETOS .2 CLASIFICACIÓN BÁSICA DE LOS TIPOS DE PROTECCIÓN DISPONIBLES.2 Duración limitada .3 Otras restricciones numéricas .8 Número de registro .9 REGISTRO INTERACTIVO.17 Fichero clave.17 Programas limitados .28 Protección hardware .32 Comprobación de la presencia del CD.34 Compresores y codificadores PE.41 Protección contra la copia del CD.42 Deterioro físico del CD.42 Ficheros de tamaño falso .42 CDs sobredimensionados.43 TOC ("Table of Contents") ilegal .43 Ficheros agrupados.43 Errores ficticios de software y otras manipulaciones en el proceso de fabricación de los CDs .44 Protecciones comerciales.44 SafeDisc.45 SecuROM.46 ProtectCD .46 Armadillo Software Protection System.47 ASProtect.48 VBox .49 Programas en Visual Basic .50 Comparación de cadenas de caracteres .51 Comparación variable (tipo de datos variable) .51 Comparación variable (tipo de datos largo).52 Conversión del tipo de datos.52 Transferencia de datos.53 Operaciones matemáticas .53 Miscelánea .53 Otras vulnerabilidades de las protecciones actuales .53 CAPÍTULO 2.PROTECCIÓN CONTRA LOS PROGRAMAS DE DEPURACIÓN .65DEPURADORES MÁS HABITUALES.66 SoftICE.66 USO ELEMENTAL DE SOFTICE.66 Configuración del programa .66 Mandatos, funciones y controles básicos.68 Windows .68 Gestión de los puntos de corte .75 GESTIÓN ESTRUCTURADA DE EXCEPCIONES (SEH).77 Descripción y uso de la gestión estructurada de excepciones.77 SEH en desarrollo.77 Algoritmos comunes.79 Algoritmos basados en la función API CreateFileA .79 La interfaz BoundsChecker y el uso de INIT3.80 Empleo de INT1 .85 Empleo de INT 68h .88 Búsqueda en el registro de Windows .88 Búsqueda en autoexec.bat.89 PUNTOS DE CORTE.91 Puntos de corte para software.91 Puntos de corte en una interrupción (BPINT) .91 Puntos de corte en una ejecución (BPX).92 Puntos de corte en un área de memoria (BPR).93 Puntos de corte hardware.94 Descripción de un programa de ejemplo empleado para detectar puntos de corte hardware.96 MÉTODOS AVANZADOS.101 Privilegios de los anillos .101 Maneras de saltar entre el anillo 3 y el anillo 0 .101 Detección de SoftICE mediante VxDCall .109 Desactivación de la tecla de atención de SoftICE.112 OTROS USOS SENCILLOS DE SEH.115 CAPÍTULO 3.PROTECCIÓN CONTRA LOS DESENSAMBLADORES .119DESENSAMBLADORES HABITUALES .119 USO ELEMENTAL DE W32DASM.120 ALGORITMOS COMUNES.123 Protección contra las cadenas .124 Protección contra las funciones importadas.124 CÓDIGO AUTOMODIFICABLE (SMC).125 SMC pasivo .126 SMC activo.129 EDICIÓN DEL CÓDIGO DEL PROGRAMA EN TIEMPO DE EJECUCIÓN .131 CAPÍTULO 4.PROTECCIÓN CONTRA FROGSICE .133USO ELEMENTAL DE FROGSICE.133 Opciones básicas.134 Opciones avanzadas.135 ALGORITMOS COMUNES.135 VxDCall de la función VMM_GetDDBList .135 Uso de la función CreateFileA .139 CAPÍTULO 5 PROTECCIÓN CONTRA PROCDUMP .141USO ELEMENTAL DE PROCDUMP .141 DEFINICIÓN Y OBJETIVO DEL VOLCADO DE MEMORIA.145 ALGORITMOS COMUNES.146 CAPÍTULO 6.EDICIÓN DEL CÓDIGO DEL PROGRAMA .149MÉTODOS PARA EDITAR EL CÓDIGO DEL PROGRAMA.150 USO ELEMENTAL DE HIEW.150 Edición de un programa para detectar SoftICE .151 ALGORITMOS COMUNES.154 Comprobación de la integridad de los datos.154 Comprobación de la integridad de los datos de un fichero .154 Comprobación de la integridad de los datos en memoria .158 Otros métodos.163 CAPÍTULO 7.EL FORMATO PE Y SUS HERRAMIENTAS .165DESCRIPCIÓN DEL FORMATO DE FICHERO PE.167 DESCRIPCIÓN Y FUNCIONAMIENTO DEL COMPRESOR-CODIFICADOR PE.167 Creación de un codificador o compresor PE .168 Desventajas de los compresores-codificadores PE.169 Algunos compresores-codificadores PE.169 ASPack .169 CodeSafe .170 NeoLite .171 NFO.171 PE-Compact .171 PE-Crypt .172 PE-Shield.173 PETITE.173 Shrinker.174 UPX.174 WWPack32.175 FORMATO DE FICHERO PE.176 Comprobación del formato PE .176 Cabecera PE.179 Tabla de secciones.182 Direcciones virtuales, materiales y virtuales relativas (RVA) .183 Tabla de importaciones.185 Tabla de exportaciones .188 CONFIGURACIÓN DE UN CODIFICADOR PE.190 Inclusión de una sección nueva en un fichero .190 Redirección de los datos .195 Inclusión de código en una sección nueva.196 Bifurcaciones y variables.198 Funciones importadas .203 Creación de una tabla de importaciones .204 Proceso de una tabla de importaciones original .208 Uso de una función importada.213 PROCESO TLS.215 CODIFICACIÓN.218 Elección del algoritmo de codificación.218 Algoritmos de codificación comunes.218 Violación del código.220 Áreas codificadas y no codificadas.221 Ejemplo de una codificación sencilla con un codificador PE.223 DISEÑO FINAL DE UN CODIFICADOR PE.229 PROTECCIONES ALTERNATIVAS.251 Cargador de símbolos AntiSoftICE .251 Comprobación del punto de entrada al programa.252 RSA.252 Ejemplo de aplicación con RSA.256 CONCLUSIÓN SOBRE EL FORMATO PE Y COMPRESORES-CODIFICADORES PE .257 CAPÍTULO 8.OTROS PROGRAMAS UTILIZADOS POR LOS CRACKERS .259REGISTRY MONITOR.259 FILE MONITOR.262 R!SC'S PROCESS PATCHER.263 Ficheros de mandatos .264 THE CUSTOMISER.265 CAPÍTULO 9.CRACKING DE ENTRENAMIENTO .269CRUEHEAD - CRACKME V1.0.270 CRUEHEAD - CRACKME V2.0.274 CRUEHEAD - CRACKME V3.0 .275 COSH - CRACKME1 .279 MEXELITE - CRACKME 4.0 .281 IMMORTAL DESCENDANTS - CRACKME 8 .282 Easy Serial .284 Harder Serial.285 Name/Serial .285 Matrix .287 KeyFile .287 NAG .288 Cripple .288 DUELIST - CRACKME #5 .288 Descodificación manual de un fichero .289 Modificaciones efectuadas directamente en memoria .293 TC - CRACKME 9 .294 Obtención manual del número de serie.294 Conversión del programa en un generador de claves.297 TC - CRACKME 10 .299 TC - CRACKME 13 .300 TC - CRACKME 20 .304 ZEMOZ - MATRIX CRACKME .307 ZEMOZ CRCME.311 Edición hexadecimal del programa .314 Utilización del cargador.318 CAPÍTULO 10.INFORMACIÓN COMPLEMENTARIA SOBRE EL CRACKING .323ORIGEN Y DIFUSIÓN.323 CRACKERS.324 CRACKERS Y GRUPOS CONOCIDOS .325 +HCU.325 Immortal Descendants .326 Messing in Bytes MiB .327 Crackers in Action CIA.327 Phrozen Crew .327 United Cracking Force.328 DEViANCE.328 Ebola Virus Crew .328 Evidence .328 Da Breaker Crew .329 RECURSOS EN INTERNET .329 Cracking e ingeniería inversa.329 Programación.330 Herramientas.331 Referencias .331 Grupos de cracking.332 CONSEJOS BÁSICOS DE LOS CRACKERS.332 Cracking (Lucifer48) .332 Aplicación de instrucciones NOP (+ORC).333 Parchear (MisterE).333 Pensar como un cracker (rudeboy) .333 Herramientas (rudeboy).334 CAPÍTULO 11.SECCIÓN DE REFERENCIA. 335INSTRUCCIONES BÁSICAS EN ENSAMBLADOR.335 MENSAJES DE WINDOWS .343 ACCESO AL REGISTRO DE WINDOWS.350 RESUMEN DE FUNCIONES DE SOFTICE.355 Definición de puntos de corte.356 Manejo de los puntos de corte .356 Modificar y mostrar memoria.356 Obtención de información sobre el sistema.356 Mandatos para los puertos de entrada y salida (I/O).358 Mandatos para controlar el flujo.358 Modo de control .358 Mandatos de personalización.358 Utilidades.359 Uso de las teclas del editor de líneas .359 Uso de las teclas de desplazamiento.359 Mandatos de ventana .360 Control de ventana.360 Mandatos sobre símbolos y fuente .360 Operadores especiales.361 BIFURCACIONES CONDICIONADAS, NO CONDICIONADAS E INSTRUCCIONES SET.361 Bifurcaciones condicionadas .361 Bifurcaciones no condicionadas .363 Instrucciones SET.363 ALGORITMOS CRC-32.364 OTROS ALGORITMOS APLICABLES A CODIFICADORES Y COMPRESORES PE .366 EJEMPLO DE ALGORITMO DE CODIFICACIÓN .368 MEJORAS MENORES A PROCDUMP.371 INTERFAZ DE BOUNDSCHECKER .375 Obtención de ID.375 Definición del punto de corte .375 Activación del punto de corte .375 Desactivación del punto de corte inferior .376 Obtención del estado del punto de corte .376 Supresión de puntos de corte .376 CAPÍTULO 12.CONCLUSIÓN .377ÍNDICE ALFABÉTICO
Enlaces
Comentarios