--

ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
WKT
Programa Ultraedit v6.10a W95 / W98 / NT
Descripción Excelente editor Hexadecimal.
Tipo Shareware (30 $)
Url http://www.ultraedit.com
Protección Nag Screen que nos pide el Numero de Serie. Time Limit 45 Dias
Dificultad 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas SoftIce v3.24, W32dasm v8.9, UltraEdit v5.0a
Objetivo Simular estar registrados.
Cracker Mr.WhiTe [WkT!]
Fecha 15 de Julio 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á simular que nuestro fake serial es un número de serie correcto.

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 que nos dice algo asi "UltraEdit will need to be restarted in order to validate the code".
Total, que salimos del UltraEdit y volvemos a entrar para que nos compruebe el serial.

Si te fijas, al cerrar el programa, en el directorio donde lo has instalado, se crea un archivo de registro uedit32.reg. Este archivo esta encriptado, y contiene precisamente nuestros datos de registro. Si utilizas el FileMonitor, podras comprobar como el UltraEdit lee este archivo para comprobar si nos hemos registrado correctamente.

Bien, vamos a utilizar nuestro queridisimo "death listing" o listado muerto y bucear en el código. :o)

Una vez desensamblado con el W32dasm, guardamos el project file para no tener que desensamblarlo mas tarde. Pulsamos el boton de String Data References y empezamos a buscar alguna pista.
Vemos varias referencias interesantes:
  • Thank you for supporting Shareware
  • UltraEdit 45 Day UltraEdit 45 Day Evaluation time expired!!!!

Despues de un buen rato investigando el código, y cuando ya empezaba a perderme con tantas posibles referencias....... se me ocurrio "cazar" al programa cuando lee ese archivo de registro uedit32.reg.

Buscando en mi HD encontre esas excelentes paginas de Torn@do, las Cracker's Notes.
Cojonudo, ahora solo tengo que encontrar la funcion adecuada. Vamos al apartado files a ver que hay....... ummm " GetPrivateProfileStringA " coooño, esta me suena. A ver para que carajo sirve......
"Retrieves a string from the specified section in an initialization file" ;o) Comprobamos en el W32Dasm que funciones importa el UltraEdit ..... BINGO, está. ¿probamos? PROBAMOS.

Vamos al SoftIce y abrimos el UltraEdit. ARgg, la dichosa Nag que nos pide el serial. Ponemos un nombre y un serial cualquiera ( de 6 caracteres ) y.... quietooooo!!!! antes de pulsar el boton , Control+D y vamos al SoftIce, ponemos un BreakPoint en la funcion " GetPrivateProfileStringA ", (BPX GetPrivateProfileStringA), Control+D again. Pulsamos el boton, BANG! PANTALLAZO y de vuelta al SoftIce. :o)


:0040D209 E832A00500              call 00467240 ;Aqui aterriza el Softice
:0040D20E 59                      pop ecx
:0040D20F 59                      pop ecx
:0040D210 5E                      pop esi
:0040D211 85C0                    test eax, eax
:0040D213 7520                    jne 0040D235 ;Saltamos a....



* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D213(C)
|
:0040D235 8D45C0                  lea eax, dword ptr [ebp-40] ;Serial Real
:0040D238 50                      push eax
:0040D239 8D4580                  lea eax, dword ptr [ebp-80] ;Nuestro Fake Serial
:0040D23C 50                      push eax
:0040D23D E8FE9F0500              call 00467240 ;Compara los Serials
:0040D242 59                      pop ecx
:0040D243 85C0                    test eax, eax
:0040D245 59                      pop ecx
:0040D246 7426                    je 0040D26E ;HAS PAGADO!!!
:0040D248 8D8540FFFFFF            lea eax, dword ptr [ebp+FFFFFF40] ;Otro Serial valido
:0040D24E 50                      push eax
:0040D24F 8D4580                  lea eax, dword ptr [ebp-80] ;Nuestro Fake Serial
:0040D252 50                      push eax
:0040D253 E8E89F0500              call 00467240 ;Compara los Serials
:0040D258 59                      pop ecx
:0040D259 85C0                    test eax, eax
:0040D25B 59                      pop ecx
:0040D25C 7410                    je 0040D26E ;HAS PAGADO!!!
:0040D25E C70500F24C0001000000    mov dword ptr [004CF200], 00000001



Es curioso, hay dos numeros de serie validos !!!!, en fin.... No comments ;o)
:0040D235 8D45C0 lea eax, dword ptr [ebp-40]
Si aqui escribimos " db ebp-40 " en el softIce veremos el primer serial válido.
:0040D248 8D8540FFFFFF lea eax, dword ptr [ebp+FFFFFF40]
Si aqui escribimos " db ebp+FFFFFF40 " en el softIce veremos el segundo serial válido.

Vamos a Parchear esto para que nos acepte cualquier serial:
:0040D246 7426   je 0040D26E 
Lo cambiamos por " :0040D246 EB26 JMP 0040D26E "

Así siempre saltara al código correcto y se creera que el serial que le hemos puesto lo hemos pagado. ;o)

Ok, estupendo. Parece que ya esta listo, asi que probamos de nuevo nuestro fake serial y ...... tachan ..... tachan.... nos crea el uedit32.reg (tal y como esperabamos), cargamos el UltraEdit otra vez.... AAAAAAARGGGG !!!! PERO QUE PASAAAA?? (nos ha borrado el uedit32.reg) sera cabronazooooooo!!!. NAAAAG NAAAAG again !!
Flipante !! :o? ya nos ibamos y resulta que el programilla se las da de listo. Vaya vaya..... Esto no puede ser. :o(

Ummmm, nos borra un archivo!!. ¿y? ¿donde esta el problema?
Recurrimos otra vez a las funciones importadas por el UltraEdit ( buscalas en el listado muerto con el W32Dasm ). Ummmm, una funcion que nos borre un archivo..... joer, hay varias que ponen Delete:
  • RegDeleteKeyA
  • DeleteFileA <--- ¡Uy, QUE SUPERSORPRESAAAA !!!
  • DeleteDC
  • DeleteObject
:o) Back to SoftIce !!!. Repetimos el fake serial, cerramos el UltraEdit y vemos como nos crea el archivo uedit32.reg. Ahora ponemos el BreakPoint: " BPX DeleteFileA " cargamos el UltraEdit y PLAF, pantallazo y de vuelta al SoftIce.

Aterrizamos en:
* Reference To: KERNEL32.DeleteFileA, Ord:0057h
                                  |
:004443BA FF1514644A00            Call dword ptr [004A6414]
:004443C0 A174024D00              mov eax, dword ptr [004D0274]
:004443C5 8065FC00                and byte ptr [ebp-04], 00
:004443C9 83C0D4                  add eax, FFFFFFD4
:004443CC 8D4DEC                  lea ecx, dword ptr [ebp-14]
:004443CF A37C024D00              mov dword ptr [004D027C], eax
:004443D4 899E32070000            mov dword ptr [esi+00000732], ebx
:004443DA E8CE950300              call 0047D9AD


Ummm, ¿que tal si machacamos esa asquerosa llamadita a DeleteFileA?
:004443BA FF1514644A00 Call dword ptr [004A6414]

La sustituimos por: :004443BA 909090909090 ( 6 NOPS )

Comprobamos si nos mantiene el archivo .......SI, funciona. Quiza te haya sorprendido la manera de enfocar este tutorial puesto que no es la mejor opcion para registrar este programa, la mas limpia quiero decir. Pero asi aprendes las guarreridas que se pueden hacer. Ademas, funciona ¿no? El Programa cree que nuestro numero de serie es correcto, con lo cual ya no nos aparece la molesta nag al principio.
En la ventana de Help/About aparecemos como registrados, el programa no caduca y como ya no nos borra el archivo uedit32.reg .....ya tenemos otra excelente herramienta ;o)

Creo que no hace falta que te recuerde el propósito de estos tutoriales. ¿no?

NOTA: Estos tutoriales pueden contener errores intencionados (puede ser que el autor se haya saltado la explicación de algún paso, errores en las direcciones de memoria......etc).
El objetivo es que aprendas a crackear y que tengas ideas propias. ;o)
  
*±±========-*-*-*-* 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|
*------------------*