--

ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
WKT
ProgrAmA Talisman v1.1 W95 / W98 / NT
DEsCripCi≤n Programa para crear tu propio escritorio de Windows.
Tipo Shareware (25 $)
Url http://www.lighttek.com
ProtECCi≤n Numero de Serie.
DiFiCultAD 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
HerrAmiEntAs SoftIce 3.24
oBjEtivo Obtener un n·mero de Serie valido.
CrACkEr Mr.WhiTe [WkT!]
FEChA 11 de Mayo de 1999

Introducci≤n
El programa no tiene limitaciones por no estar registrado, pero aparece una nag-screen cada vez que se arranca el programa. Hay una opci≤n para registrarse, introduciendo el nombre y la clave. El objetivo serß obtener nuestro n·mero de serie correcto y comprender mejor el funcionamiento de la funci≤n HMEMCPY.

Al Atake
Lo primero es ver c≤mo reacciona el programa al intentar registrarnos.
Ponemos un nombre, y clave cualquiera, y nos aparece un mensaje de clave incorrecta.
"Invalide registration name or code. Try again."

Podriamos utilizar el "death listing" o listado muerto y bucear en el c≤digo una vez desensamblado con el Wdasm 8.9, pero lo mejor serß practicar un poco con el SoftIce. :o)

Asφ pues, cargamos el Talisman y nos disponemos a introducir nuestro nombre y un numero de serie cualquiera. Vamos al SoftIce(Ctrl+D) ,ponemos el breakpoint(BPX HMEMCPY) y volvemos al programa(Ctrl+D), ahora pulsamos el boton " Register! " y aparecemos en el SoftIce.
Como teniamos dos campos a rellenar (nombre y serial) ahora nos encontramos en el primero, pulsamos F11 (o Ctrl+D, es lo mismo) con lo cual el Softice nos pega otro pantallazo :o)
Ahora si, estamos en el buen camino. ;o)

Desactivamos el breakpoint (BD 00) y pulsamos F12 unas cuantas veces hasta llegar al c≤digo del Talisman.
Traceamos un rato (F10) hasta alcanzar el siguiente fragmento de c≤digo:
:0047FC88 E8E73FF8FF     call 00403C74
:0047FC8D 85C0           test eax, eax
:0047FC8F 7E13           jle 0047FCA4
:0047FC91 BA01000000     mov edx, 00000001  ;Empieza con el primer caracter 
:0047FC96 8B4DF8         mov ecx, dword ptr [ebp-08]           
:0047FC99 0FB64C11FF     movzx ecx, byte ptr [ecx+edx-01] ;Mueve el codigo del caracter a ECX 
:0047FC9E 03F1           add esi, ecx ;Va sumando los codigos               
:0047FCA0 42             inc edx      ;Prepara el siguiente caracter
:0047FCA1 48             dec eax      ;Decrementa el numero de caracteres que quedan
:0047FCA2 75F2           jne 0047FC96 ;Ultimo caracter?


Este es el comienzo del c≤digo que se utiliza para calcular nuestro n·mero de serie.
Se pasan los caracteres ASCII del nombre a su correspondiente valor hexa y se van sumando. Si seguimos traceando (F10) llegamos al siguiente punto:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0047FC8F(C)
|
:0047FCA4 8975EC         mov dword ptr [ebp-14], esi
:0047FCA7 DB45EC         fild dword ptr [ebp-14]
:0047FCAA E8C52CF8FF     call 00402974
:0047FCAF 69C009030000   imul eax, 00000309 ;Multiplica la suma por 309
:0047FCB5 8BF0           mov esi, eax
:0047FCB7 3B75FC         cmp esi, dword ptr [ebp-04] ;Compara serial real con el nuestro
:0047FCBA 0F85BF000000   jne 0047FD7F  ;Salta si "mal cracker" 
:0047FCC0 B201           mov dl, 01    ;Activa el Flag de REGISTRADO   
:0047FCC2 A1E0D54700     mov eax, dword ptr [0047D5E0]
:0047FCC7 E810DAFFFF     call 0047D6DC
:0047FCCC 8BF0           mov esi, eax
:0047FCCE B101           mov cl, 01

* Possible StringData Ref from Code Obj ->"Invalide registration name or "
                                        ->"code. Try again."
                             |
:0047FD7F B830FE4700     mov eax, 0047FE30
:0047FD84 E80B0CFCFF     call 00440994


Como puede observarse, en este fragmento de c≤digo se multiplica la suma obtenida anteriormente por 309, y el valor se guarda en esi para su posterior comprobacion en :0047FCB7.
Si nos situamos en esta lφnea " :0047FCB7 3B75FC cmp esi, dword ptr [ebp-04] " y escribimos en el SoftIce " ? esi " obtendremos nuestro ansiado n·mero de serie.
Facil ┐verdad? ;o)
Puesto que el algoritmo empleado es sumamente sencillo, se deja como ejercicio al lector crear un generador de numeros de serie.
  
*▒▒========-*-*-*-* P E R S O N A L   G R E E T Z *-*-*-*-========▒▒*
    Dasavant, Niabi, r00ster, ZEncrakz, Azrael, Klimpong, Zor       
    Conde-Vampiro, Mac-Crack, Killer_P, ASTAGA, Harvestr, Iczelion    
    JosephCo, Carpathia, Taylor, Tapu, Ivanopulo, EgoistE, Torn@do,     
    JUANDA, Leoworld, ReKiem, Neural_N, Netking, Russ97,
	    Mr.Pink and of course all WKT Members ;o)



*------------------*
|WHISKEY KON TEKILA|
|Mr.WhiTe [WkT!99] |
|http://wkt.tsx.org|
|http://ecd.tsx.org|
*------------------*


[ 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 ]