COMO CRAKEAR POR ESTADO+PORCINO


CAPÍTULO V. COLOR CRACK
-Como Crackear Multimedia Builder 3.0-

Noviembre 1998

Indice
INTRODUCCIÓN

UN PRIMER VISTAZO

PRIMER OSTIAZO

ZEN CRACK

CRACK EN COLORES

CONCLUSI╙N



INTRODUCCIÓN

Victima: Multimedia Builder 3.0
Site: www.mediachance.com
Herramienta: Nuestro amado Sice y Zen crack.

Hoy es un dφa de Heineiken,CafΘ de de Kenya,Moskovkaya,Guiness,Mahon y mujeres.

Bueno, ya estamos de vuelta con un nuevo truco bajo el brazo: "Crack en Color" que lo aplicaremos a nuestro conejillo de indias, el excelente Multimedia Builder. Un programa para crear aplicacniones que incluyen sonido, imagen,video. Se programa al estilovisual de VB . No os perdais el reproductor de CD que viene con el ejemplo.



UN PRIMER VISTAZO

Realmente este programador se lo ha currado. Ha cerrado la mayorφa de las puertas de entrada a los crackers, por tanto hay que abrir otras como el "Crack en Color". Veamos alguno de sus ingenios del autor:

- Existe un n·mero de serie que se introduce desde "Help\About\Register"

- Cuando introducimos un n·mero de serie falso no aparece ninguna ventana de error.
Por lo que queda descartado el clßsico "bpx messageboxexa".

- Las cadenas de caracteres importantes las tiene encriptadas, por lo que no podemos buscarlas con el "Search and Replace", lo que impide un crack en 5 minutos.


PRIMER OSTIAZO

Desechados los ataques tφpicos, vamos a entrar por la puerta clßsica siguiendo la pista del Serial falso.

Metemos un n·mero basura "12121212", Saltamos al sice y ponemos 's 30:00 l ffffffff "12121212"'
En cada ocurrecia XX:xx aplicamos 'bpr XX:xx XX:xx+8 rw'. Una vez acabado damos al bot≤n de OK y BOOM, aparecemos en el sice. Unos F12 llegamos a la rutina "GetwindowTextA".
Dejamos esta lφnea de trabajo porque es muy aburrida.

Al final conseguimos aislar una rutina en que devuelve 0 si estamos registrados y 1 en otro caso.Podemos falsearla para registrarnos. Y de hecho lo "conseguimos". Nuestro nombre aparece en la ventana de registro. Pero hay una sorpresita. Si ejecutamos Project/Run aparece "unregistered...". ┐C≤mo es posible?

íPero SI estamos registrados!. La cosa es a·n peor, si nos peleamos con el registro y generamos un n·mero de serie vßlido las cosas no mejorar. ┐Que estß pasando aquφ?

ZEN CRACK

Si hemos pasado el algoritmo de registro satisfactoriamente, ┐porquΘ seguimos sin estar registrados?.
Razonemos, la ·nica forma de no estar registrados es que no pasemos alguna verificaci≤n. Sabemos que hemos pasado una, luego debe de haber otra verifiaci≤n en otra parte del c≤digo.

Este programador ha pensado un poco. HA SEPARADO LAS COMPROBACIONES del serial.
Y lo que es todavφa mßs interesante, en cada comprobaci≤n analiza cosas diferentes. Asφ, si se pasa completamente una comprobaci≤n no se garantiza que se pase el resto.

Sabemos ya que por lo menos hay dos comprobaciones (una que pasamos y otra no).
Debe existir un nexo de uni≤n entre las comprobaciones: Una variable que guarde el serial que hemos introducido. Pero aquφn las variantes son m·ltiples :la primera comprobaci≤n puede encriptar el serial para la segunda, modificar un flag para que siempre resulte falsa la segunda comprobaci≤n...

La pregunta que se plantea es ┐C≤mo localizo la segunda comprobaci≤n?.
La ·nica pista es el horrible letrero amarillo ".. unregistered ..". Se podrφan analizar todas las variables que modifica el primer algoritmo , pero eso es demasiado costoso. Debemos buscar otra forma.
La ·nica forma de saber que no hemos pasado las comprobaciones es el letrero amarillo. Es por ahφ por donde debemos atacar.

El mensaje estß encriptado ,luego desechamos esa vφa.
El letrero parece un Label al estilo de de JAVA o Delphi, por lo que no tiene entidad propia como una ventana.
┐Por donde atacamos?

CRACK EN COLORES

Centremonos, ┐quΘ es lo que mß llama la atenci≤n del letrero? , su color amarillo.
Este color debe de asignarse de alguna forma. Ademßs el amarillo parece que es el color de fondo del letreo. Si desensamblamos a nuestro objetivo vemos que utiliza la funci≤n setbkcolor.
Asφ pues debemos localizar algo parecido a "setbkcolor(Amarillo)".Pero como se expresa exactamente el color amarillo.

Normalmente los colores se forman a partir de la combinaci≤n de los llamados "colores bßsicos" .
Lo normal es usar como colores bßsicos RGB="Rojo Verde y Azul." Nuestro problema es como expresar el amarillo del letrero en funci≤n de RGB. Por suerte nuestro amarillo es una simple combinaci≤n. Podemos utilizar la paleta de colores de cualquier programa para comprobarlo. En mi caso he usado el Visual CafΘ 2.5 (crackeado por supuesto).
Introduciendo Rojo=255,Verde=255,Azul=0 obtenemos el mismo amarillo que el del letrero.

Si el color hubiera sido mßs complejo,capturamos la pantalla con el letrero y la importamos a un editor grßfico como el Photoshop.Seleccionamos un pixel del color amarillo del letreo y vemos sus componentes en tΘrminos de Rojo, Verde y Azul.
Es posible que exita un program que realize esta funci≤n mßs sencilla. Si lo encontris, por favor notificßdmelo.

Asi pues debemos de localizar algo asi como "setbkcolor(255 255 0)". Necesitamos conocer si existen mßs parßmetros para el setbkcolor. Mirando el API tenemos:

COLORREF SetBkColor(HDC hdc,	// handle of device context  
                    COLORREF crColor 	// background color value
                    );	
The COLORREF value is a 32-bit value used to specify an RGB color. 
When specifying an explicit RGB color, the COLORREF value has the following hexadecimal form: 
0x00bbggrr  
Nuestro color es un entero y se pasa como segundo parßmetro. Dado que los n·mero se almacenan al revΘs debemos buscar SetBkColor(hdc,0000ffff). Desempolvemos los manuales del Sice, por lo que nos queda

bpx setbkcolor if (*(esp+8)==ffff0000)

Expliquemos un poco el churro que ha aparecido. bpx setbkcolor indica que se pare cuando se ejecute la rutina setbkcolor Se para cuando (*(esp+8)==00ffff), es decir, cuando el contenido del registro EIP+8 sea 00ffff. Recordemos que los parßmteros a las funciones se pasan a travΘs de la pila (ESP=registro stack pointer):

Concretamente es ESP+8 porque en se apilan dos palabra de 4 bytes cada uno.
Antes de la llamada ESP=000
	Llamada             ESP=Direcci≤n de retorno. (palabra de 4 bytes)
			    ESP+4=parßmetro HDC.(palabra de 4 bytes)
                            ESP+8=segundo parßmetro


Aplicando nuestro bpx y pulsando "Proyect/Run" BOOM, aparecemos en el sice, para ver si estamos realmente ante el setbkcolor correcto, cambiemos el color "d esp+8" Y pasamos de "FFFF00" a "FFFFFF" .
Obtenemos un bonito color blanco de fondo. Luego hemos pillado la llamada correcta. Un par de f12 despuΘs obsevamos

:460a15 cmp [ESI+378],43CA

Si los valores no son iguales vemos el mensaje de error. Por tanto es este el flag que controla todo. Ya s≤lo basta ver quien lo inicializa. Pero este es un trabajo conocido por todos que lo dejo como ejercicio.

Fijaos como no se utiliza un clßsico flag 1,0 sino un valor difφcil 0x43CA. Un nuevo sφntoma de que el autor ha leido sobre cracks.



CONCLUSI╙N

Hemos aprendido una nueva tΘcnica: "Color Crack". Es recomendable que se aplique cuando el mensaje de "unregistered "no sea una ventana sino una cadena dentro de una ventana.
Debemos averiguar el color que se aplica al mensaje y colocar en el Sice:

bpx nombreRutina if (*(esp+8)==00BBGGRR)

Recordad que los valores de Blue(azul),Green (Verde) , Red (rojo) estßn hexa.

Cuando apararezcamos en el Sice cambiar el color para ver si estamos en la ventana correcta. En tal caso buscar un salto que evite el mesaje.

Este tΘcnica siempre es aplicable, pero se recomienda que se utulize cuando existan pocos colores en la ventana y el mensaje estΘ resaltado del resto (cosa bastante habitual).

Una posible generalizaci≤n de estß tΘcina es aplicable al color del tipo de letra (foregroundcolor), el tipo de fuente, (setFont), el aspecto (cursiva ...). Recordad de echar mano de una buena ayuda Api para win32.

No olvidemos el esquema de protecci≤n tan original de SEPARACI╙N DE COMPROBACIONES que ha implementado el autor. Realmente interesante, si se±or.

Notas para los lectores.

1.- Los mensajes del tipo "Hazme el crack para ....", "Dime como de crackea....", "Dime donde puedo encontrar..." son automßticamente ignorados. El objetivo de estos artφculos es ense±ar a crackear no ense±ar a ser unos llorones ineptos que s≤lo saben mendigar.

2.- S≤lo responderΘ a preguntas te≤ricas sobre cracks, indicando algunas pistas que faciliten la labor.

3.- Narices, escribid artφculos sobre los programas que crackeeis.
De nada sirve lo que aprendΘis si no lo repartφs, se os pudre en el cabeza, palabra.

4.- Lamento no haber contestado a ciertos mails interesantes. Desde aquφ mis excusas.

5.- Si os ha servido para algo mis artφculos, no seßis vagos y mandad un mail indicßndomelo.


Mr.PinK & WKT ( WHISKEY KON TEKILA )

Esperamos vuestras opiniones, sugerencias y ensayos en estadoporcino@hotmail.com
En breve analizaremos tipos de protecciones mucho más interesantes.

Recordad bebed de la fuente, buscad a +ORC en la red.





[ Entrada | Documentoz GenΘricoz | WKT TEAM Main Site ]
[ Todo el ECD | x Tipo de Protecci≤n | x Fecha de Publicaci≤n | x orden AlfabΘtico ]