| ESTUDIO COLECTIVO DE DESPROTECCIONES Última Actualizacion: 25/10/2001 |
Programa | WinRAR v2.04 | W95 / W98 / NT
Descripción | Programa para Compresión de ficheros
Tipo | Shareware
Tipo de Tutorial | [X]Original, []Adaptación, []Aplicación, []Traducción
Url | http://www.rarsoft.com
Protección | Algunas Limitaciones si no estás registrado
Dificultad | 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas | SoftIce v3.22, Editor Hexadecimal
Objetivo | Simular estar registrados.
Cracker | Mr.Brown
Grupo | Whiskey Kon Tekila
Fecha | Julio de 1998
INTRODUCCION
Es necesario registrarse para tener acceso a algunas opciones, como "Authenticity Verification". Lo ideal sería analizar más a fondo la rutina que calcula la clave en función del nombre, y hacer un generador de claves. Pero el método más rápido es interceptar la rutina y provocar el valor que queremos que devuelva. ;-)
AL ATAQUE
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 Documentoz Genéricoz para más información) Ejecutar el programa WinRAR, y seleccionar la opción para registrarse. Introducir cualquier nombre en Registration (AV) Text (Ej:ECD IntroCracking) Introducir cualquier clave en Registration Code (Ej:222333) Pulsar Ctrl+D para ir al SoftIce. Una de las maneras en que el programa puede leer la información que hemos tecleado, es con GetWindowTextA o con GetDlgItemTextA (lo de la A al final es para los programas 32 bits) Así que vamos a poner un par de BreakPoints para estas instrucciones :
      BPX getwindowtexta

      BPX getdlgitemtexta
Pulsamos Ctrl+D para volver al WinRAR, y le damos al botón OK. Apareceremos en el SoftIce, y desactivamos los BreakPoints con BD * Vamos haciendo F12 hasta llegar al código del WinRar. (Saltándonos el código del Kernel,User...) Llegaremos a :4139A6, después de la llamada a User32!GetDlgItemTextA El valor guardado (el nombre) está en [EBP-64], que podemos ver haciendo D ebp-64 Avanzamos con varios F10, hasta la siguiente llamada a GetDlgItemTextA. El valor (la clave) queda en [EBP-AC] (que es lo mismo que [EBP+FFFFFF54]) Unos pocos F10 más, y veremos :
    :004139E9 8D9554FFFFFF    lea edx, dword ptr [ebp+FFFFFF54]

    :004139EF 52              push edx  ; la clave (222333)

    :004139F0 8D4D9C          lea ecx, dword ptr [ebp-64]

    :004139F3 51              push ecx  ; el nombre (ECD IntroCracking)

    :004139F4 E80369FFFF      call 0040A2FC   ; Validar_Registro

    :004139F9 83C408          add esp, 00000008

    :004139FC 85C0            test eax, eax

    :004139FE 752F            jne 00413A2F  ; Salta si OK (AX=1)
Así pues, la rutina que valida el nombre y la clave introducidas está en :40A2FC Acaba en :40A596, y devuelve AX=1 si OK, y AX=0 si no ok. Pero además, en la posición de memoria [00425758] también guarda ese valor. Así que vamos a rediseñar esa rutina, para hacerla funcionar más rápido. ;-) Lo que la rutina debe hacer es devolver un valor en AX y en [425758], todo lo demás sobra. ;-) Y si ese valor es 1, mejor que mejor. ;-DD Por ejemplo :
    :0040A2FC 33C0        xor eax,eax

    :0040A2FC 40          inc eax

    :0040A2FC A358574200  mov dword ptr [00425758],eax

    :0040A2FC C3          ret
Si aplicamos estos cambios antes de continuar la ejecución, nos dirá que "Correct Registration". Pero si cerramos el WinRar, y lo volvemos a abrir, nos dirá que "Evaluation Copy". Así que hay que hacer los cambios efectivos en el fichero WinRar95.exe Con un editor hexadecimal, vamos a la posición 98FC, y ponemos encima de lo que haya : 33C040A358574200C3 Después de salvar, ya tenemos el WinRAR "optimizado" ;-) Si todavía no hemos hecho la opción de Registrarse con el parche, nos saldrá lo de "Evaluation Copy". Tan sólo hacer el Registro con el nombre y clave que queramos, y yatá ;-) También podeis probar si habeis aplicado bién el parche, seleccionando un fichero para comprimir con el WinRAR, y activar la casilla de "Authenticity Verification". Si os deja es que está todo Ok. Nota : Si la rutina que valida el registro (que va de :40A2FC hasta :40A596) hiciera algo más de lo que yo he supuesto, y por tanto no se pudiera parchear tan alegremente com he hecho, la solución entonces sería poner ECX=1 en :40A56F Como no acostumbro a usar el WinRar, no lo he podido comprobar al 100%. Ya me diréis....
[ 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