miércoles, 20 de febrero de 2013

como crackear por estado+porcino 1


IDEAS BÁSICAS SOBRE CRACKING

Un programa no es más que un montón de instrucciones (haz, esto, haz lo otro), una tras otra. Estas instrucciones, (en general) están en memoria, parte de ellas se encargan de impedir la ejecución del resto (el verdadero programa). Resumiendo, tienes un bonito programa tras una puerta (esquema de protección), nuestro objetivo es reventar la puerta, buscar la llave,pasar por las rendijas,quemarla..., como puedes ver una cantidad inagotable de ataques.

Un pequeño inciso, sólo puedes reactivar instrucciones que se encuentren en el programa. Por ejemplo, si se ha desactivado la opción de salvar, puede ser que el conjunto de sentencias para salvar el programa esté presente pero desactivado, o bien que simplemente no esté. Si están las sentencias, se pueden reanimar, sino están entramos en un mundo diferente, una evolución del cracking, la apasionante Reconstrucción Software, pero eso será tema de otro capítulo.

HERRAMIENTAS CRACK

Demos un breve repaso a las principales herramientas que utilizaremos a lo largo del curso. Existen otras muchas herramientas que las comentaré cuando nos sean necesarias.

Editor hexadecimal

Los programas no son más que un conjunto de instrucciones y cada instrucción no es más que un conjunto de bits, pero donde demonios se guardan esos bits?.

Los bits del programa se localizan en los ficheros, p.e. las instrucciones del programa de compresión arj se guardan en el fichero arj.exe. Hay algunos programas que no guardan todas sus instrucciones en único fichero, si no en varios, un ejemplo de esto son los programas que utilizan librerías dinámicas (o dll)

Un editor hexa, no es más que un programa, que permite "editar" los ficheros de instrucciones de otros programas, osea, que permite ver,modificar,copiar,pegar... los bits de los programas. Para simplificar la cosa no se muestran los bits a pelo, sino que se muestran en hexadecimal, de ahí su nombre. Nosotros lo utilizaremos para alterar el comportamiento de los programas. Supongamos que conocemos la instrucción sentencia de la rutina de protección que debemos modificar, sea jz 23 y queremos modificarla por jnz 23, bien como toda instrucción no es más que un conjunto de bits, sea 0110 para jz 23 y 1001 para jnz 23, sólo nos queda buscar estos bits dentro del fichero ejecutable del programa (que es, en general, el contiene las sentencias del programa). Como usamos un editor hexa, debemos buscar la secuencia de un unos y ceros en hexa en el fichero del programa que queremos modificar. Si la secuencia que buscamos es muy común deberemos utilizar las instrucciones que se encuentran entorno a la instrucción a modificar.

Esto es muy importante, sólo debe existir una localización del patrón de búsqueda en el fichero, si existe más de una, debemos añadir a la búsqueda las sentencias de alrededor, sino se corre el riego de modificar la sentencia equivocada, lo que provoca casi siempre un "cuelgue".

Un no es más que una modificación de las instrucciones de un fichero, así pues para hacer un crack debemos saber que instrucciones modificar y en qué fichero. Una vez crackeado el fichero, el programa se comportará siguiendo la nueva sentencia que le hemos modificado.

Hay un montón de editores hexa, yo os recomiendo UltraEdit-32 Professional, os lo podéis bajar de http://ftpsearch.ntnu.no/

(excelente herramienta de búsqueda en la Web, utilízala cuando no encuentres algún fichero) busca w32dasm. Yo utilizo la versión 4.31a. Cada cracker tiene su editor favorito, !encuentra el tuyo!. Este programa es shareware, así que tendrás que crackearlo, recuerda : lo primero que tienes que crakear son tus propias herramientas. Si no puedes crackearlo, busca otro editor hexa, los hay a montones.

Desensamblador

Un desensamblador toma un fichero de instrucciones en hexa y lo convierte a lenguaje ensamblador. El lenguaje ensamblador, es el conjunto de sentencias que entiende el microprocesador (tu Pentium o mi 486). El procesador es el corazón del ordenador, todas las sentencias son ejecutadas por él y sólo por él. Por ejemplo un 43 en hexa se transforma en inc eax. Se necesitan algunos conocimientos de ensamblador pa esto de crackear.

Nosotros usaremos el desensamblador para crakear con la técnica de la lista muerta que veremos más adelante.

Puedes pillar un magnífico desensamblador para W95 en http://www/expage.com/page/w32dasm , es shareware, así que deberás crackearlo. Próximamente le dedicaremos un capítulo al w32dasm y aprenderemos a crackearlo. Yo utilizo la versión 8.9, aunque una posterior es también útil.

Debugger

Un debugger permite ejecutar instrucción a instrucción (instrucciones en ensamblador, se entiende) un programa, por tanto también ejecutará instrucción a instrucción la rutina de protección, ya que es parte del programa. Esto nos permitirá analizar su comportamiento.

El mejor debugger para W95 es sin duda el Softice quo te lo puedes bajar de http://www.numega.com , es sin duda uno de los mejores programas que he visto en mi vida. Te recomiendo que te bajes también los manuales. El Softice es una de las mejores herramientas cuanto más domines al Softice, mejor crakearás, y te aseguro que se pueden realizar verdaderas maravillas con él. Para trazar (esto es, pasar el debug) a programas MS-DOS, puedes utilizar versiones anteriores del Softice o utilizar algunos de los excelentes debugger que hay para Dos como el SymbDebug.

Os indicaré un par de consejos y trucos para el Softice.

--> Instalación

Haz la prueba de pantalla, si te la saltas, lo más seguro es que cuando actives el Softice se te quede la pantalla a rayas. Busca el driver de la tarjeta de vídeo que tengas instalada en W95 dentro de la lista que se ofrece. Aunque la encuentres, haz la prueba de pantalla, es posible que no funcione correctamente. Si no encuentras tu tarjeta de vídeo o tienes problemas de pantalla, corta la instalación y selecciona "Adaptador de Vídeo Standard VGA", reinstala el Softice y utiliza ese mismo driver para la prueba de pantalla. Si sigues teniendo problemas te remito a la Doc del Softice (que deberías haberte bajado). Particularmente, con el adaptador Standard VGA no he tenido nunca problemas. Hay por ahí sueltos una ampliación de drivers de tarjetas para Softice, búscalos si no quieres pasa a la VGA Standard.

Activa la opción de ratón, te evitará escribir bastantes secuencias hexa de instrucciones, te permitirá moverte libremente por las ventanas, seleccionar, copiar y pegar texto así como redimensionar las ventanas.

--->Configuración

El Loader es una pequeña utilidad que permite especificar el programa que queremos depurar y además nos permite configurar el Softice, En Edit/SoftIce Initialization Settings/Initialization string pon X;wl;wr;wd7; code on; y en Histoy Buffer Size pon 512
Abre el fichero winice.dat (dentro del directorio de instalación del Softice) , toda línea del tipo EXP=c:\windows\system\system.drv , quítale el punto y como inicial.

--->Ejecución

El Softice debe cargarse siempre antes que W95. Si estas en W95, reinicializa en modo MS-DOS y ejecuta WINICE.EXE, este cargará el Softice y W95. Te recomiendo que utilices un fichero bat.

Las ventanas que aparecen son

Ventana de registros de la CPU (wr). A los típicos se ha añadido una E así se diferencia los registros normales que admiten 16 bits, de los registros que soportan 32 bits. Por ejemplo, ax se llama ahora eax. Siempre podremos referencias a ax, sabiendo que nos quedaremos con 16 bits últimos de eax.

Ventana de datos de la CPU (wd). Muestra la memoria en formato hexa, ahí se pueden apreciar los datos que maneja el programa, entre otras cosas.

Ventana de código (wc). Muestra, la dirección de memoria en la que se encuentra la instrucción, la codificación hexa de la instrucción y la instrucción en ensamblador.

Ventana de control, el la que aparece arriba el nombre del programa que estamos trazando. Aquí es donde introduciremos los comandos del SoftIce.

He aquí algunos comandos fundamentales para el Softice:

CTRL+D

Conmuta de W95 al Softice y viceversa. No te asustes por el pantallazo ni por el aspecto cutre inicial, llegarás a quererlo, créeme. Si salen rayas, vuelve a leer el apartado -->Instalación

F4

Estando en Softice, te permite echar un ojo al estado actual en W95 sin necesidad de conmutar.

F8

Ejecuta una instrucción, las modificaciones en los registros del sistema aparecen de diferente color. Si la instrucción es una llamada a una rutina, se ejecutarán una a una todas las instrucciones de la rutina llamada.

F10

Ejecuta una instrucción, las modificaciones en los registros del sistema aparecen de diferente color. Si la instrucción es una llamada a una rutina, se ejecutan de golpe todas las sentencias de la rutina llamada.

F11

Ejecuta de golpe todas las instrucciones de la rutina actual y se para el la instrucción siguiente de la rutina padre que llamó a esta rutina. Esto nos permite trazar al padre, estando en una rutina hija. En cuanto la uses menudo verás que no es tan complicado como parece.

F12

Ejecuta todas las sentencias hasta el primer ret (incluido)

bpx nombreRutina

Salta al Softice cuando se ejecuta la rutina cuyo nombre es nombreRutina. Ejemplo bpx messageboxa saltará al Softice cuando el programa muestre una ventana de mensaje del tipo mensaggebox.

bpx dirInstrucción

Salta al Softice cuando se ejecuta la instrucción que está es la dirección de memoria dirInstrucción.

bpr dirIni dirFin rw

Salta al Softice cuando hay un acceso de lectura o escritura en las direcciones dirIni,dirFin ambas incluidas. Ejemplo bpr 100 109 rw que puesto de otra forma más fácil de expresar, nos queda algo como bpr 100 100+9 rw

s l dir tam'cad'

Busca la cadena cad a partir de dir hasta dir+tam. Esta sentencia casi siempre tendrá este aspecto. Ejemplo s 30:00 l ffffffff 'cad' . Las comillas son importantes. 30:00 es la dirección de comienzo del segmento de datos, osea la dirección de memoria donde están los datos del programa y ffffffff es el tamaño del segmento de datos, como veréis hay 4GB de espacio para almacenar datos.

d registro

Muestra en la ventada de datos el contenido de lo que hay a partir de la dirección guardada en registro. Ejemplo d eax muestra a lo que apunta eax.

d dirección

Muestra en la ventada de datos el contenido de lo que hay a partir de la dirección.

d nomRutina

Muestra en la ventada de datos el contenido de lo que hay a partir de la dirección donde comienza la rutina nomRutina.

Impr Pant

Vuelca el contenido de la pantalla por la impresora, quizás tengas que darle varia veces hasta que el buffer de la impresora se llene.

0 comentarios:

Publicar un comentario