| ESTUDIO COLECTIVO DE DESPROTECCIONES Última Actualizacion: 25/10/2001 |
Programa | WinBabel v4.2 | W95 / W98 / NT
Descripción | Traductor Simultáneo Multilingüe para ver cualquier aplicación en cualquier idioma sin modificarla. Traduce Ventanas, Web y Portapapeles
Tipo | Shareware
Tipo de Tutorial | [X]Original, []Adaptación, []Aplicación, []Traducción
Url | http://www.winbabel.com
Protección | Nag Screen y traduce 5 minutos si y 5 no
Dificultad | 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
Herramientas | SoftIce v3.25, W32dasm v8.9, Ultra Edit 7.00b, Hacker's View 6.16
Objetivo | Anular Nag Screen y quitar limitación 5 minutos
Cracker | FrEdY
Fecha | 14 de febrero de 2000
INTRODUCCION
    * Programa 32 Bytes cuya única limitación es que traduce 5 minutos si y 5 no por

      no estar registrado.

    * Aparece una nag-screen cada vez que se arranca el programa.

    * El objetivo es suprimir la Nag-screen y la limitación de tiempo

    * Función SoftIce.

      Apoyo del desensamblado, comprobación de los procesos, paradas, etc...

    * Función del W32dasm.

      Su función es aportarnos el desensamblado en lenguaje máquina.

    * Función del UltraEdit.

      Editor hexadecimal para hacer los cambios que necesitemos en el ejecutable.

    * Función del Hacker's View.

      Busca y/o remplaza comandos de ensamblador, cadenas hexadecimales y de texto.
AL ATAQUE
    Arrancamos el programa y nos muestra la siguiente nag-screen:

    Lo primero que hay que hacer es eliminar esa nag-screen, para lo cual, una vez

    desensamblado con el W32dasm, guardamos el project file para no tener que

    desensamblarlo mas tarde. Pulsamos el botón Seach para buscar NOTA:

    y encontraremos:

    * Possible StringData Ref from Data Seg O64 ->"NOTA: Esta copia de WinBabel no "

    Sin embargo no nos sirve ya que es la NOTA: de los 5 minutos. Buscamos la siguiente,

    pero W32dasm no encuentra más, que raro pero si lo habia comprobado con UltraEdit

    y había 2 cadenas que contenian NOTA:, utilizo el Loader32 del SoftIce para cargar

    el programa, una vez en la ventana del SoftIce, coloco un Bpx MessageBoxA, y pulso

    F5 y aparece la Nag-Screen, pulsamos en Aceptar y nos regresa a la ventana del

    SoftIce y pulsando F12, nos situaremos dentro de WINBABEL!CODE+4e3D en la linea

    siguiente de la llamada del mensaje. Desplazandonos por la ventana del código

    veremos:

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

    |:00414DDB(C)

    |

    :00414DF2 E8ABCDFFFF              call 00411BA2 ;Iniciar Traductor

    :00414DF7 8B4508                  mov eax, dword ptr [ebp+08]

    :00414DFA A310254200              mov dword ptr [00422510], eax

    :00414DFF E872FAFFFF              call 00414876 ;Iniciar lista controles

    :00414E04 681B4C4100              push 00414C1B ;Procesa mensaje

    :00414E09 8D83490A0000            lea eax, dword ptr [ebx+00000A49] ;WINBABEL

    :00414E0F 50                      push eax

    :00414E10 FF7508                  push [ebp+08]

    :00414E13 E822B3FFFF              call 0041013A

    :00414E18 83C40C                  add esp, 0000000C

    :00414E1B E8A1ECFFFF              call 00413AC1 ;ESPAC

    :00414E20 85C0                    test eax, eax

    :00414E22 7450                    je 00414E74 ;Mostrar Nag/Crear Ventana Programa

    :00414E24 6AFF                    push FFFFFFFF

    * Reference To: USER32.MessageBeep, Ord:0000h

    |

    :00414E26 E829A10000              Call 0041EF54

    :00414E2B 6A00                    push 00000000

    :00414E2D 8D83580B0000            lea eax, dword ptr [ebx+00000B58] ;WinBabel

    :00414E33 50                      push eax

    :00414E34 8D83520A0000            lea eax, dword ptr [ebx+00000A52] ;NOTA:

    :00414E3A 50                      push eax

    :00414E3B 6A00                    push 00000000

    * Reference To: USER32.MessageBoxA, Ord:0000h

    |

    :00414E3D E80CA10000              Call 0041EF4E ;Mustra Nag-Screen

    :00414E42 6A00                    push 00000000 ;Aquí paro SoftIce delpues de F12

    La eliminación de la nag-screen está en el salto condicional de la línea 414e22,

    por lo que sustituimos 74 por 75 en el Offset 5422 Una vez parcheado con UltraEdit

    lo probamos y observamos que funciona perfectamente, no mostrando la nag-screen y

    entrando directamente la siguiente ventana del programa que mantiene siempre en

    primer plano:

    Transcurridos 5 minutos al pinchar en una de la opciones:

    Traducir Ventanas, Traducir Web, y/o Traducir Portapapeles muestra la siguiente

    ventana:

    Desensamblado con el W32dasm, el proyecto que guardamos. Pulsamos el botón Seach

    para buscar por ejemplo NOTA:

    y encontraremos sólo:

    * Possible StringData Ref from Data Obj ->"NOTA: Esta copia de WinBabel no "

    Desplazandonos más arriba veremos el siguiente listado:

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

    |:00414278(U)

    |

    :0041428E E8B4F8FFFF              call 00413B47 ;Es tiempo PAC

    :00414293 85C0                    test eax, eax

    :00414295 7449                    je 004142E0 ;No mostrar Nag/Seguir

    :00414297 83FB01                  cmp ebx, 00000001

    :0041429A 740A                    je 004142A6 ;Mostrar Nag/Seguir

    :0041429C 83FB02                  cmp ebx, 00000002

    :0041429F 7405                    je 004142A6 ;Mostrar Nag/Seguir

    :004142A1 83FB03                  cmp ebx, 00000003

    :004142A4 753A                    jne 004142E0

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

    |:0041429A(C), :0041429F(C)

    |

    :004142A6 6A00                    push 00000000

    :004142A8 E874F5FFFF              call 00413821 ;Poner estado traducir

    :004142AD 59                      pop ecx

    :004142AE 6AFF                    push FFFFFFFF

    * Reference To: USER32.MessageBeep, Ord:0000h

    |

    :004142B0 E89FAC0000              Call 0041EF54 ;MessageBeep

    :004142B5 6A04                    push 00000004

    * Possible StringData Ref from Data Obj ->"WinBabel PAC"

    |

    :004142B7 688E0C4200              push 00420C8E ;Guarda dirección WinBabel PAC

    * Possible StringData Ref from Data Obj ->"NOTA: Esta copia de WinBabel no "

    ->"esta registrada."

    |

    :004142BC 68470C4200              push 00420C47 ;Guarda dirección NOTA: ...

    :004142C1 6A00                    push 00000000

    * Reference To: USER32.MessageBoxA, Ord:0000h

    |

    :004142C3 E886AC0000              Call 0041EF4E ;Mustra mensaje

    :004142C8 83F806                  cmp eax, 00000006

    :004142CB 0F8526010000            jne 004143F7

    :004142D1 6A05                    push 00000005

    La eliminación de la limitación de tiempo está en el salto condicional de la

    línea 414295, por lo que sustituimos 74 por EB en el Offset 4895 Una vez

    parcheado con Hacker's View podremos analizar el programa sin limitaciones.

    Esto es todo, hasta la próxima ..... Un Saludo
[ 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