| ESTUDIO COLECTIVO DE DESPROTECCIONES Última Actualizacion: 25/10/2001 |
Programa | Registry Studio V1.01 | W95 / W98 / NT
Descripción | Estupendo Editor del Registro de Windows Con Muchas Utilidades
Tipo | Trial de 30 dias
Tipo de Tutorial | [X]Original, []Adaptación, []Aplicación, []Traducción
Url | http://tucows.teleweb.pt/files4/rs1inst.exe
Protección | Share 30 dias y Ejecutable Inmodificable
Dificultad | 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas | SoftIce v4, W32dasm v8.9, Heditor HEX ( A tu Gusto )
Objetivo | Simular estar registrados.
Cracker | Karpoff
Grupo | TnT!
Fecha | 30 de Octubre de 1999
INTRODUCCION
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 ATAQUE
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 | 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