Arrancar el Pc con el SoftIce 3.22, con el fichero WinIce.Dat debidamente configurado.
(Ver "Introducción al SoftIce" en la sección de Documentos Genéricos para más información)
Por ser un programa de V.Basic5, debemos tener también en el WinIce.Dat :
EXP=c:\windows\system\msvbvm50.dll
(Ver "Visual Basic5 con SoftIce" en la sección de Documentos Genéricos para más información)
La idea es tan simple que no tenía muy claro si funcionaría, pero ha ido bién. ;-DDD
Si después de introducir una clave, nos dice si es correcta o no, entonces es que la compara
con algún otro valor.
Si podemos ver los dos valores que compara, y uno es la clave que nosotros hemos escrito,
pues el otro es la clave correcta.
Si no encontraramos nuestra clave, sería porque ha sido encriptada, pero no es el caso para este programa.
Así pues, nos interesa interceptar el programa en cuanto haga esa comprobación de la clave. (PeroGrullo Rulez ;-)
Lo primero que se me ocurre después de echarle un vistazo a las funciones de msvbvm50.dll, es probar
con un BreakPoint para __vbaStrCmp
O sea, pasito a pasito tenemos :
Ejecutamos el Submission Wizard, vamos a la pantalla de registro y ponemos una clave cualquiera (Ej:ECD IntroCracking)
Ctrl+D para ir al SoftIce, y ponemos el BreakPoint con BPX __vbastrcmp (ojo, que hay dos subrallados delante de vba)
Ctrl+D para volver al Submission W., y le damos al botón "Save Registration Key".
Ok, el BPX hace efecto, y nos hallamos en el código de la msvbvm50.dll.
Con F12 se llega al código del SubWiz4w, en 137:48F5A9
Unas linias más arriba hay unos push con los parámetros para llamar a __vbaStrCmp.
0137:0048F59B mov ebx, [MSVBVM50!__vbaStrCmp]
0137:0048F5A1 push eax
0137:0048F5A2 push 43ADE8
0137:0048F5A7 call ebx
Así que pongo un BreakPoint antes de que se produzca la llamada a la función que compara.
(doble click en 137:48F59B, o BPX 137:48F59B)
El BreakPoint anterior ya se puede desactivar (BD 0) si todavía no lo habéis hecho.
Ctrl+D para seguir la ejecución del programa, y nos dice que registration invalid,
Como ya tenemos puesto un BreakPoint, le volvemos a dar al botón "Save Registration Key".
Estaremos en el SoftIce en :48F59B, y ahora sí localizamos facilmente los valores a comparar.
Uno está en EAX, y el otro en 43ADE8. (Antes también los hubieramos podido encontrar, pero así
se ve más claro).
Con D EAX vemos la primera cadena. Son los 2 primeros caracteres de la clave que hemos puesto.
Mientras que con D 43ADE8 vemos los 2 primeros con los que compara. (Mmmmm ;-)
Como somos un poco mal pensados, apuntamos en un papel las letras que se ven en :43ADE8
En mi caso hay 9 letras(todas en mayúsculas) separadas por puntos(.) repartidas desde :43ADE8 hasta :43AE17
Quitamos los BreakPoints (BD *), y seguimos ejecutando (G).
Otra vez en la pantalla de Registro, aunque esta vez ya será la última. ;-)
Ponemos la clave que nos hemos apuntado, y nos dirá "Thank you for registering...."
Como supongo que la clave debe variar según el ordenador, no creo que sirva de nada que dé la que a mi me ha salido.
Así pues si estás interesado, recuerda aquello de ...."El movimiento se demuestra andando" ;-)
|