CAPÍTULO 1.MÉTODOS DE PROTECCIÓN Y SUS PUNTOS DÉBILES .1CIFRADO.1PROGRAMAS INCOMPLETOS .2CLASIFICACIÓN BÁSICA DE LOS TIPOS DE PROTECCIÓN DISPONIBLES.2Duración limitada .3Otras restricciones numéricas .8Número de registro .9REGISTRO INTERACTIVO.17Fichero clave.17Programas limitados .28Protección hardware .32Comprobación de la presencia del CD.34Compresores y codificadores PE.41Protección contra la copia del CD.42Deterioro físico del CD.42Ficheros de tamaño falso .42CDs sobredimensionados.43TOC (“Table of Contents”) ilegal .43Ficheros agrupados.43Errores ficticios de software y otras manipulaciones en el proceso de fabricación de los CDs .44Protecciones comerciales.44SafeDisc.45SecuROM.46ProtectCD .46Armadillo Software Protection System.47ASProtect.48VBox .49Programas en Visual Basic .50Comparación de cadenas de caracteres .51Comparación variable (tipo de datos variable) .51Comparación variable (tipo de datos largo).52Conversión del tipo de datos.52Transferencia de datos.53Operaciones matemáticas .53Miscelánea .53Otras vulnerabilidades de las protecciones actuales .53
CAPÍTULO 2.PROTECCIÓN CONTRA LOS PROGRAMAS DE DEPURACIÓN .65
DEPURADORES 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.119
DESENSAMBLADORES 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.133
USO 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.141
USO 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.149
MÉ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.165
DESCRIPCIÓ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.259
REGISTRY MONITOR.259
FILE MONITOR.262
R!SC’S PROCESS PATCHER.263
Ficheros de mandatos .264
THE CUSTOMISER.265
CAPÍTULO 9.CRACKING DE ENTRENAMIENTO.269
CRUEHEAD – 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.323
ORIGEN 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.335
INSTRUCCIONES 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
Def
inició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