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.
miércoles, 20 de febrero de 2013
como crackear por estado+porcino 1
16:01
No comments
Suscribirse a:
Enviar comentarios (Atom)
0 comentarios:
Publicar un comentario