|
|
 |
ESTUDIO
COLECTIVO DE DESPROTECCIONES
Última Actualizacion:
25/10/2001
|
 |
|
Programa |
Como crackear por
Estado+porcino
Capítulo 5
Color Crack. Multimedia
Builder 3.0
|
W95 / W98 / NT |
Descripción |
Programa para la creación
de aplicaciones multimedia |
Tipo |
Limitaciones a la
version no registrada |
Tipo de Tutorial |
[X]Original, []Adaptación, []Aplicación,
[]Traducción |
Url |
www.mediachance.com |
Protección |
Numero de serie |
Dificultad |
1) Principiante, 2) Amateur, 3)
Aficionado, 4) Profesional, 5) Especialista |
Herramientas |
SoftIce y Zen Crack |
Objetivo |
Simular estar registrados. |
Cracker |
Estado+Porcino |
Grupo |
Whiskey
Kon Tekila |
Fecha |
Noviembre de 1998 |
INTRODUCCION |
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.
|
CONCLUSION |
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 |
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.
|
AL
ATAQUE |
|
AL
ATAQUE |
|
[
Entrada | Documentos
Genéricos | WkT!
Web Site ] |
[
Todo el ECD | x
Tipo de Protección | x Fecha
de Publicación | x Orden
Alfabético ] |
|
(c)
Whiskey Kon Tekila [WkT!] - The Original Spanish Reversers.
Si necesitas
contactar con nosotros
, lee
esto
antes e infórmate
de cómo puedes ayudarnos |
|
|
|
|
|