Vamos a por
el, y lo que hacemos despues de ejecutarlo, ver un menu donde pone REGISTER
pulsamos sobre el y nos aparece lo que buscamos, un textbox donde nos pide
la clave para poder registrarnos y en su lugar esta la cadena "Free Submission
Wizard Only", tendremos que borrarla y poner nuestra clave favorita, en
mi caso 'esiel2'. Pulsamos sobre el boton que pone 'Save Wizard Key' y
nos sale el tipico mensaje diciendo que la clave no es correcta, tras esto,
si nos fijamos detectamos que el programa automaticamente pone en mayusculas
las dos primeras letras de mi password, ¡Que Raro!, solo las dos
primeras, el resto lo deja en minusculas. Bueno, bueno, bueno, intentemos
un aproximamiento un breakpoint ¿cual se os ocurre? ... ¡VENGA!...
¿Ninguno? .... Pues el de casi siempre, rtcmsgbox, asi que escribimos
nuestro clave otra vez 'esiel2' y pulsamos sobre el boton ... y zash ...
volvemos al soft-ice despues de nuestro breakpoint, asi que como ya nos
ha sacado el mensaje de error tendremos que subir hacia arriba para encontrar
donde toma la decision de que nuestra clave sea correcta o incorrecta,
y nos encontramos con la siguientes intrucciones:
0137:0048E79E add esp,38
0137:0048E7A1 test di,di
0137:0048E7A4 jz 0048E88F
<--- Aqui toma la decision
0137:0048E7AA mov edi, [MSVBVM60!__vbastrcat]
si sacar el error o no
0137:0048E7B0 push 00442038
dependiendo del flag 'z'
creo que sabeis al que
me refiero ;)
Pero, resulta
que si cambiamos el flag, nos sale el mensaje de que estamos registrados
pero cuando queremos registrarnos en mas de 17 buscadores nos dice que
no puede ser, ¿como es eso?, ¿no estabamos ya registrado?,
... pues no. Pues entonces, tendremos que hacerlo mas fino y buscar una
clave que sea realmente valida para ello, asi que si nos acordamos del
principio en donde vimos que el programa cogia las dos primeras letras
y las convertia en mayusculas, asi que si buscamos un breakpoint o bien
coja caracteres a la izquierda de la cadena o bien tranforme caracteres
en mayusculas, con lo que si nos miramos el tutorial sobre Crackeando
en Visual Basic podemos ver ambos breakpoint, los cuales son los siguientes:
rtcLeftCharBstr
rtcUpperCaseBstr
Probamos con
el primer breakpoint, volvemos al programa y pulsamos sobre el boton e
inmediatamente regresamos de nuevo al Soft-ice en las siguientes lineas:
0137:0048E512 push edx
0137:0048E513 call [MSVBVM60!rtcLeftCharBstr]
<--- Coge caracteres a la izda.
0137:0048E519 mov edx,eax
0137:0048E51B lea ecx, [ebp-1c]
0137:0048E51E call esi
En estas lineas
se coge los dos primeros caracteres de mi clave introducida, que fue 'esiel2',
pues se coge 'es'. Y despues sigue con:
0137:0048E520 push eax
0137:0048E521 call [MSVBVM60!rtcUpperCaseBstr]
<--- Aqui convierte 'es' en 'ES'
0137:0048E527 mov edx,eax
0137:0048E529 lea ecx, [ebp-24]
0137:0048E52C call esi
0137:0048E52E push eax
0137:0048E52F mov eax, [005112E8]
....
....
0137:0048E54A push eax
0137:0048E54B push ecx
0137:0048E54C call [MSVBVM60!rtcRightCharBstr]
<--- Coge caracteres a la dcha.
0137:0048E552 mov edx, eax
'iel2'.
0137:0048E554 lea ecx, [ebp-20]
0137:0048E557 call esi
0137:0048E559 push eax
0137:0048E55A call [MSVBVM60!rtcLowerCaseBstr] <---
Convierte los anteriores
0137:0048E560 mov edx,eax
caracteres en minusculas.
0137:0048E562 lea ecx, [ebp-28]
0137:0048E565 call esi
....
....
Y asi pulsando la tecla F10 hasta que nos encontramos algo interesante
....
como lo que viene ahora.
....
0137:0048E6C7 push 02
0137:0048E6C9 push edx
0137:0048E6CA call [MSVBVM60!rtcLeftCharBstr]
<--- Coge de nuevo 2 caracteres
0137:0048E6D0 mov edx,eax
a la izquierda de mi clave.
0137:0048E6D2 lea ecx, [ebp-38]
0137:0048E6D5 call esi
0137:0048E6D7 mov ebx, [MSVBVM60!__vbaStrcmp]
<--- ¡Funcion para comparar
cadenas!! ¿para que puede
servir esta funcion? jeje
0137:0048E6DD push eax
<--- Se guarda lo que realmente le interesa al programa
de mi clave que son las dos primeras letras en
mayusculas 'ES'
0137:0048E6DE push 004420EC <--- Es
la direccion donde se guarda la clave
correcta. Podemos verla poniendo: D 4420EC
Y nos daria como resultado 'PW'
* En estos 2 ultimos push se guarda las dos cadenas que ha comparado
la funcion api __vbastrcmp.
....
Seguimos observando el programa, puesto que como sabemos donde
.... toma la decision de decirnos si somos buenos o somos malos
pues tendremos que
.... tracearlo un pokito y de camino viendo lo que va sucediendo.
....
0137:0048E6EE push 02
0137:0048E6F0 neg edi
0137:0048E6F2 push eax
0137:0048E6F3 neg edi
0137:0048E6F5 call [MSVBVM60!rtcLeftCharBstr]
0137:0048E6FB mov edx,eax
0137:0048E6FD mov ecx, [ebp-30]
0137:0048E600 call esi
<--- Hace referencia al api __vbastrcmp
0137:0048E602 push eax
<--- ¡¡ Curioso ¡¡ Se vuelve a guardar de nuevo
las dos
primeras letras de mi clave y en mayusculas ('ES')
0137:0048E603 push 004420E0 <--- Es
la direccion donde se guarda otra clave
correcta!!!! en este caso es: 'EW'
....
....
Avanzamos un pokito y nos encontramos otra vez con esto.
0137:0048E61A call [MSVBVM60!rtcLeftCharBstr]
0137:0048E620 mov edx,eax
0137:0048E622 mov ecx, [ebp-28]
0137:0048E625 call esi
<--- Hace referencia al api __vbastrcmp
0137:0048E627 push eax
<--- Vuelve a guardar las 2 primeras letras de mi clave
en mayusculas('ES').
0137:0048E628 push 004420D4 <--- Otra
clave correcta, en este caso es: 'DN'.
....
....
0137:0048E63F call [MSVBVM60!rtcLeftCharBstr]
0137:0048E645 mov edx,eax
0137:0048E647 mov ecx, [ebp-20]
0137:0048E64A call esi
<--- Hace referencia al api __vbastrcmp
0137:0048E64C push eax
<--- Vuelve a guardar las 2 primeras letras de mi clave
en mayusculas ('ES').
0137:0048E64D push 004410C8 <---
Otra clave correcta, en este caso es: 'KX'
....
....
Seguimos trazando el programa en busca de nuestro " jz 0048E88F
"
...
Hasta que lo encontramos.
Ahora procedemos
a probar una de las multiples claves correctas que hemos encontrado, pero
tenemos una sorpresa y es que cuando pulsamos sobre el boton para comprobar
pues nos sigue dando un error, asi que pensemos un poko .... seguramente
algo se nos habra pasado por alto, pero la funcion de comparacion tomaba
dos caracteres de mi cadena y devolvia dos caracteres como 'validos', y
ademas el programa solo convierte a mayusculas las 2 primeras de mi clave
..... ummm .... uummmm.... y si cogemos y ponemos en el textbox la palabra
clave+(4 o 5 espacios en blancos)... pues FUNCIONA, luego hemos crackeado
este programa sin necesidad del Smartcheck. Resumiendo las posibles claves
validas son:
PW_esiel2
EW-esiel2
DN-otra_vez-soy-yo-(esiel2)
KX-;o)
DNEWPWKX
....
Y asi todos las
que quieras, esto es todo, hasta la proxima ..... Un Saludo. ;)
|