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 se 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.


Estado+Porcino

Esperamos vuestras opiniones, sugerencias y ensayos en [email protected]
En breve analizaremos tipos de protecciones mucho m�s interesantes.

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