ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
TNT!Crack!Team - http://tntcrack.da.ru | http://tntcrack.tsx.org |

TNT!Crack!Team Tutorial

Programa Registry Studio V1.01 Win9x/NT W95 / W98 / NT
Descripci≤n Estupendo Editor del Registro de Windows Con Muchas Utilidades
Tipo Trial de 30 dias
Url http://tucows.teleweb.pt/files4/rs1inst.exe
Protecci≤n Share 30 dias y Ejecutable Inmodificable
Dificultad 1) Principiante
Herramientas SoftIce v4, W32dasm v8.9,  Heditor HEX ( A tu Gusto )
Objetivo Simular estar registrados.
Cracker Karpoff
Fecha 30 de Octubre de 1999

Introducci≤n
 

Bueno este programa cuenta con la tipica limitacion shareware 30 dias y una proteccion de mierda que si modificas el programa este no se ejecuta. Este programa nos da la opcion de registrarnos mediante el tipico Name y S/N, pero lo que haremos sera parchearlo para ver como eliminar este tipo de protecciones, que a mi parecer son estupidas ya que supuestamente  no puedes modificar el ejecutable, pero a cambio el programador hace una libreria dll con el mismo nombre que el ejecutable y donde se encuentran todos los boletos para sacar tanto el serial valido como aplicarle un partche, y este archivo no cuenta con esa proteccion XD pero nada vamos a por el ejecutable (regstudio.exe)

 

Al Atake
 

A trabajar, bien como siempre lo primero es prepararnos todo para trabajar comodamente, iniciamos windows cargando el SoftIce, hacemos una copia del ejecutable RegStudio.exe con el nombre Studio.exe, desensamblamos el original y editamos con el editor Hex la copia Studio.exe y por ultimo adelantamos la fecha de windows 1 mes para trabajar con el programa expirado, ya tenemos todo a punto :-)

 

Ejecutamos RegStudio.exe y lo primero que vemos es una ventanita con la opcion de registrarnos y con el siguiente aviso "Trial period has expired. Do you tal y tal"

Directamente vamos al W32dasm y buscamos esta cadena de texto en las strign data Refernces pulsando sobre [STRN-REF], hay podemos ver la referencia que buscamos, algo que me llamo la atencion es que hay poquisimas referencias a cadenas de texto por ejemplo no vemos ninguna que haga referencia a cuantos dias de evaluacion nos quedan, ni el tipico invalid code, Thank you for register etc. Y el motivo de esto es la librerφa regStudio.dll donde se encuentran todas estas y muchas mas, de hecho husmeando un poquito si la desensamblais podeis modificar la rutina que decide si el reg metido es correcto o no y que os acepte cualquier numero de registro, ademas no cuenta con la proteccion que tiene el ejecutable osea que modifiques lo que sea el programa se inicia, pero creo que es mas interesante atacar al ejecutable y romperle el royo anti inicio que tiene.

Bueno pulsamos sobre Trial period has expired. Do you y vamos a:

 

* Possible StringData Ref from Data Obj ->"Trial period has expired. Do                             |                                      

00401371 68D4504000     push 004050D4 – Aquφ Aparecemos

00401376 6A00           push 00000000

 

y justo encima de esta referencia tenemos este codigo:

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:                        |:00401351(C)

  0040135C 83F801         cmp eax, 00000001

  0040135F 7509           jne 0040136A – Salto Interesante

  00401361 5F             pop edi

  00401362 5E             pop esi

  00401363 81C4F4000000   add esp, 000000F4

  00401369 C3             ret Retorno Cabron

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address               0040135F(C)

  0040136A 6A04          push 00000004

  0040136C 6824564000    push 00405624

Viendo que tenemos un jne en 0040135F es logico pensar que si este no se ejecuta pillara el retorno (ret)que hara que retorne a la llamada(call) padre, evitando asi el mensage de expiracion,

 

0040135F 7509 jne 0040136a por un nop nop para que no se ejecute el salto y no llege nunca a mostrarnos el mensage de expired, probemos localizamos el offset de este salto que es 135F y nos vamos al editor hex cambiamos el 7509 por un 9090 con esto el salto queda eliminado ya no existe,   probamos a ejecutar studio.exe y como os comente el programa no hace nada antes de abrirse ya se ha cerrado (podeis probar a modificar otras instrucciones, os pasara lo mismo), veamos por que puede ocurrir esto.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:00401351(C)

  0040135C 83F801          cmp eax, 00000001

  0040135F 7509            jne 0040136A – Salto Interesante

  00401361 5F              pop edi

  00401362 5E              pop esi

  00401363 81C4F4000000    add esp, 000000F4

  00401369 C3              ret – Retorno Cabron

Bueno pues vemos que si quitamos del medio el jne la siguiente instrucci≤n importante es el retorno ( RET) en azul ahora tenemos que aberiguar que llamada(call) es la responsable de que este el ret.

para localizar la llamada(call) responsable de que exista ese ret no tenemos mas opcion que utilizar nuestro querido y amado SoftIce, ejecutamos la consola del softice cargamos el archivo RegStudio.exe. Para saber donde se encuentra el call responsable podemos poner un BreakPoint direcctamente a el salto que hemos parcheado antes (aseguraros de que el ejecutable que cargais en el softice es el original y que no es el que hemos parcheado) pulsamos el boton de los engranajes (load)Y cuando nos salga la tipica ventana del softice aceptamos y entramos directos al soft (apuntaros en un papel la direccion de memoria del salto para ponerle un BP)

Bpx 0040135F

Pulsamos F5 para que siga la ejecucion del programa e inmediatamente se para en la direccion a la que le pusimos el BP, figaros como en

0040135F 7509            jne 0040136A – que es donde se para el soft

hay a su derecha una flecha indicando que este salto se ejecutara a la direccion de memoria que indica, claro se salta el RET que nos interesa estudiar, osea que parcheamos el jne como antes convirtiendolo en un nop nop, para hacerlo desde le soft metemos el commando [a] que es ensamblar

a 40135f [Intro] en azul lo que ponemos  pulsamos Intro, y seguimos los pasos

- 0040135f nop [Intro]

- 00401360 nop [Intro]

- 00401360 [Intro]

y ya hemos partcheado el salto suprimiendolo ahora vamos pulsando F10 hasta llegar al ret y cuando llegamos pulsamos otro F10 y justamente nos lleva a

  0040103A E8C1020000           call 00401300 La responsable del ret

  0040103F 85C0                 test eax, eax

  00401041 0F85BE010000         jne 00401205 – muy interesante

Tenemos localizado la llamada responsable del, ret hechemos un ojo, Esto fue lo que ocurrio cuando parcheamos antes el primer salto, y lo convertimos en mierda el ret nos trae a

  0040103F 85C0                 test eax, eax – AQUI

aquφ se comprueban los valores de eax si estos son iguales hara que se ejecute

00401041 0F85BE010000          jne 00401205 – SI SE EJECUTA (MAL CRACKER)

si se ejecuta nos manda a

  00401205 5F                  pop edi -- AQUI

  00401206 5E                  pop esi

  00401207 5D                  pop ebp

  00401208 33C0                xor eax, eax

  0040120A 5B                  pop ebx

  0040120B 81C4F4010000        add esp, 000001F4

00401211 C21000                ret 0010 – NOS SACA DEL PROGRAMA

bueno si no entendeis muy bien os recomiendo que traceeis paso a paso con el softice

al ejecutarse el salto 00401041 0F85BE010000 jne 00401205 veis que nos lleva a una serie    de instrucciones que nos sacan inmediatamente del programa he aquφ la estupida         proteccion, si es que esta puesta como tal, aunque creo que si ya que si os fijais en cualquier pedazo de codigo encontrais un ret que si lo seguis con el soft nos trae al mismo sitio.

Ya solo nos queda hacer que no se ejecute nunca este salto, para ello lo eliminamos con una serie de 6 nop o 90. Localizamos el offset que es 1041 y vamos a nuestro editor hex donde cambiamos 0F85BE010000 por 909090909090 salvamos los cambios y el ejecutable funciona perfectamente sin limitaciones de tiempo.

Recordad que tenemos que parchear los dos saltos que hemos analizado, acordaros tambien de volver a poner la fecha actual a windows.

Pos nada mas, esperando que esto os ayude a aprender un poco mas, hasta el proximo. XD

saludos a todos/as

       karpoff/TNT

 



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