Karpoff Spanish Tutor

Programa: Drive Doppler 1.20 Release Candidate #2!


 

PROTECCION: Name / Serial, Limitacion de Tiempo.
Descripcion: Comprueba que carpetas incrementan de tamaño
Dificultad: Principiante
DOWNLOAD: http://www.pinoyware.com/download/dop12r2e.zip O ftp://ftp.gabtoof.com/shuffleplay/dop12r2e.zip
Herramientas: SmartCheck 6.03, W32Dasm_VB, Editor Hexadecimal
CRACKER: Karpoff   FECHA: 19/11/1999

 

 INTRODUCCION

Hola gentes!! Bueno vamos a por el proyecto Nº15 de los manuales para NewBies desde Cero, en este proyecto intentare explicar diferentes formas de crackear un mismo programa con diferentes herramientas, vamos a incorporar el SmartCheck este es un debugger para Visual Basic creado por Numega, es muy importante tener bien configurada esta herramienta para que nos muestre lo que queremos ver.

A pesar de lo que podáis pensar esta herramienta es muy fácil de usar si el objetivo es sacar un Serial Number correcto, por supuesto que el tema se complica si se quieren seguir algún proceso especifico etc.

Para configurar el smartcheck adjunto unos gif sacados de un manual que no encuentro en este momento, pero con los gif no teneis ningun problema.  AQUÍ

Limitaciones del programa

Tenemos 21 dias de evaluacion en esos 21 dias podemos evaluar el programa sin restricciones y sin Nag, tenemos la posibilidad de registrarnos mediante el tipico NAME: COMPANI: REGKEY:

Atakes

Con el SmartCheck localizaremos un Serial Number valido en cuestion de segundos,

Con el W32dasmVB haremos que pasada la evaluacion el programa siga funcionando, localizando la rutina de fin de evaluacion y modificandola en beneficio nuestro J

 

 

 AL ATAKE

PARTE 1    SMARTCHECK 6.03

Empezamos... abrimos el SmartCheck Lo configurado como muestran los gif. Con la Opcion open seleccionamos el ejecutable dlopper.exe

ddp001.jpg (10105 bytes)

Es importante que tengais la barra de herramientas con los botones pulsados que se ven en la imagen, una vez cargado doppler.exe pulsamos la casilla start, inmediatamente se empieza a ejecutar nuestra victima pero ni se imagina que le estamos viendo las tripas. Si habeis configurado el SmartCheck como os sugeri, mientras se ejecuta el programa aparecera una ventana de error que dice asi Numega SmartChec Error Detectted pulsais la opcion Acknowledge tantas veces como os aparezca.

Bueno el programa esta iniciado solo tenemos que meter los datos de registro en Help\Enter Key

Meteis los datos que os de la gana yo puse.

NAME: karpoff

COMP: kk

S/N : 8493

Pulsamos OK y nos escupe el mensage Invalid Code!!   Aceptamos y vamos al SmartCheck y pulsamos la casilla End, por que aunque el programa ha terminado de ejecutarse sigue creando eventos y no es lo mismo buscar un S/N en 200 lineas de codigo que en 20000 J.

Bueno para localizar el S/N correcto yo hago lo siguiente,  bien lo localizo mediante la funcion __VbaStrCmp, __VbaStrComp o introduciendo en la casilla de busqueda el S/N falso las dos opciones son utiles la primera es la funcion utilizada generalmente por Visual Basic para comparar los datos que hemos metido con los correctos y la segunda nos situa donde se encuentra el S/N que hemos metido y luego rastreando es facil encontrar el S/N correcto, en este caso utilizo la primera opcion osea que metemos en la casilla de busqueda vbastrcmp y pulsamos Enter

2 veces, en este caso el S/N aparecio enseguida

ddp002.jpg (32824 bytes)

Sencillo no?? Vemos como se paro en la funcion __vbaStrCmp y hay estan nuestros numeros

Nuestro S/N :  8493

S/N Correcto:  2E92F40

Pero ... SORPRESA!! Realmente este numero no me sirve ni a mi, por que si os fijais este programa genera un numero cada vez que lo ejecutamos e intentamos registrarnos, este numero lo podemos ver en la parte superior de la ventana de registro, y dependiendo de este numero genera el S/N valido pero solo para esa ejecucion, osea que si no introduces el S/N que has capturado en la misma ejecucion no te sirve de nada.

Asi que hay que repetir otra vez el proceso y sin cerrar el programa introducimos el serial capturado jejeje, o podemos pensar en otra forma de crackear el programa, esta vez haciendo un parcheo para que simule estar registrados (personalmente me gusta mas lo del parcheo que localizar el S/N)

PARTE 2

Bueno lo primero hacer una copia del ejecutable doppler.exe con el nombre por ejemplo doppler2.exe, desensamblamos doppler.exe con el W32dasm VB (el que muestra las String Ref. en Prog. visual basic) si no lo teneis lo podeis descarar de mi pagina http://welcome.to/karpoff en la seccion herramientas, seguimos.. con el editor Hex editamos doppler2.exe y adelantamos la fecha de Windows 1 mes para trabajar con el programa expirado.

Ejecutamos el programa para ver que hace cuando esta caducado, vemos que nos muestra un aviso diciendo que el programa ha expirado nos da la opcion de rellenar el registro si fallamos el programa no llega a ejecutarse.

ATAKE

Podemos localizar la rutina que se encarga de comprobar el S/N y manipularla o tambien podemos localizar la rutina que decide si el programa esta caducado o no y modificarla en beneficio nuestro, cual cogemos yo opto por la segunda, creo que la primera opcion es la que suelo mostrar en otros manuales asi que vamos a impedir que el programa caduque. La teoria: a partir del mensaje de error analizaremos el codigo y veremos donde y como toma la decision de que el programa no se ejecute por estar caducado, localizado esto pasaremos a modificar el codigo.

Estamos en el W32dasmVB con el programa desensamblado, pulsamos la boton de las Strg-Ref. y buscamos entre las cadenas de texto el mensaje de expiracion:

"Your 21-day trial period has expired. "

Hacemos doble clip y nos lleva directamente a:

* Possible StringData Ref from Code Obj ->"Your 21-day trial period has expired. "   |

00424E75 C78570FFFFFF18D04000  mov dword ptr [ebp+FFFFFF70], 0040D018 -AQUI

 

Bueno analicemos el codigo para ver que coño pasa por que cuando pasan los 21 dias ya no funciona el programa.

* Reference To: MSVBVM50.__vbaFreeStr, Ord:0000h

  |

:00424E1E FF1554E54200             Call dword ptr [0042E554]

:00424E24 6685F6                   test si, si

:00424E27 0F843D010000             je 00424F6A – el responsable

* Reference To: MSVBVM50.__vbaVarDup, Ord:0000h

   |

:00424E2D 8B35E4E44200             mov esi, dword ptr [0042E4E4]

:00424E33 B804000280               mov eax, 80020004

:00424E38 BB0A000000               mov ebx, 0000000A

:00424E3D BF08000000               mov edi, 00000008

:00424E42 8D9558FFFFFF             lea edx, dword ptr [ebp+FFFFFF58]

:00424E48 8D4D98                   lea ecx, dword ptr [ebp-68]

:00424E4B 894580                   mov dword ptr [ebp-80], eax

:00424E4E 899D78FFFFFF             mov dword ptr [ebp+FFFFFF78], ebx

:00424E54 894590                   mov dword ptr [ebp-70], eax

:00424E57 895D88                   mov dword ptr [ebp-78], ebx

 * Possible StringData Ref from Code Obj ->"Sorry!"

  |

:00424E5A C78560FFFFFFB4BA4000    mov dword ptr [ebp+FFFFFF60], 0040BAB4

:00424E64 89BD58FFFFFF             mov dword ptr [ebp+FFFFFF58], edi

:00424E6A FFD6                     call esi

:00424E6C 8D9568FFFFFF             lea edx, dword ptr [ebp+FFFFFF68]

:00424E72 8D4DA8                   lea ecx, dword ptr [ebp-58]

 Bueno esta bien sencillo no ?? Tenemos un bonito salto condicional en la direccion 00424E27 je 00424F6A que hace esto?? Bueno mientras estamos dentro del periodo de evaluacion el salto condicional se ejecuta llevándonos a 00424F6A evitando asi el temible aviso de expiracion, pero cuando han pasado los 21 dias este salto es como si no estaria y al no ejecutarse BooM!! Pantallazo y fuera del programa, pues ya sabemos que tenemos que hacer lo vamos a convertir en un salto incondicional, que se ejecute siempre asi nunca nos mostrara el Your 21-day tal tal... haber tenemos

 

00424E27 0F843D010000  je  00424F6A   y queremos

00424E27                jmp 00424F6A

Como calculamos el valor en Hexa para que el salto nos lleve justo a la direccion de memoria que queremos 00424F6A Bueno con el propio W32dasm podemos hacerlo solo tenemos que pulsar CTRL+L para activar el debugger y hacer el parcheo en memoria, bueno pues eso pulsamos CTRL+L se abre la ventana de comandos y pulsamos load enseguida empieza el proceso de ejecucion y se abren numerosas ventanas pulsamos la opcion Goto Address y metemos la direccion de memoria del salto ouseaseeee 00424E27 aceptamos y el debugger nos situa justo en esa direccion ahora pulsamos Patch code y se abre una nueva ventana pues solo tenemos que meter los cambios que queremos hacer tecleamos

jmp 00424F6A y pulsamos Enter

Enseguida vereis justo debajo como se ha generado la el valor que necesitamos para cambiar el salto.

00424E27 E93E10000 JMP 00424F6A

Ahora solo nos queda llevar a cabo los cambios localizamos la direccion del offset que la vemos en la barra inferior del W32dasm 24227 y vamos al Editor Hex

Donde cambiamos

0F843D010000 por E93E1000000

y ya esta probamos a ejecutar doppler2.exe y olee!! El programa funciona, hacemos algunas pruebas para asegurarnos de que el parcheo no afecte a otras funciones del programa.

Y todo esta en orden, pero podemos ser un poco mas elegantes si os fijais cuando arranca el programa vemos en el nag de presentacion you have 0 dais tal tal podemos cambiar eso por lo que pondria si estariamos registrados, ale pues hacemos lo mismo que antes localizar la rutina responsable de que se imprima la frase, buscamos you have en las string ref. y cliqueamos sobre la frase.

Y aquí tenemos toda la movidilla

:00424C2B FFD3                     call ebx

:00424C2D 6685F6                   test si, si

:00424C30 7410                     je 00424C42 –Nuestro amigo

* Possible StringData Ref from Code Obj ->"written by Gary Calpo"

|

:00424C32 BABCCE4000               mov edx, 0040CEBC

:00424C37 8D4DD8                   lea ecx, dword ptr [ebp-28]

* Reference To: MSVBVM50.__vbaStrCopy, Ord:0000h

    |

:00424C3A FF15B4E44200             Call dword ptr [0042E4B4]

:00424C40 EB4A                     jmp 00424C8C -- Importante

 

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

|:00424C30(C)

Possible StringData Ref from Code Obj ->"You have "

:00424C42 68ECCE4000               push 0040CEEC

:00424C47 E8542C0000               call 004278A0

:00424C4C 50                       push eax

Haber resumiendo!! tenemos un salto condicional en 00424C30 que si se ejecuta nos muestra los dias de evaluacion mediante el You have y otro aviso similar que hay debajo de ese, bueno pues hagamos que no se ejecute el salto, y nunca llegara a You have, ya que antes de llegar se encuentra con un salto incondicional   en 00424C40 que nos saca volando, evitando que se impriman los avisos, osea que tenemos que inutilizar el salto condicional de 00424C30. cambiamos

00424C30 7410  je 00424C42  Por

00424C30 90    nop

00424C31 90    nop

localizamos la direccion de offset de nuestro salto 24030 y vamos al editor HEX cambiamos

7410 por  9090

Asunto solucionado, pero todavía se puede mejorar este crack evitando que se impriman avisos similares como en el about, pero eso lo dejo como deberes del manual.

Nada mas espero que os sirva de ayuda a todos los que empezais a crackear.

Y acordaros de restaurar la fecha de vuestro Windows.

Pues esto es todo. Que os a parecido.. interesante no¿? Como siempre mi mayor deseo es que entedais esto como yo intento explicarlo.

Un saludo para todos/as (karpoff)

como siempre cualquier duda podeis contar con migo.

Este material es solo para uso educativo, por ahora los cracks son ilegales. 

Email Kf_karpoff@hotmail.com

URL: http://welcome.to/karpoff  http://karpoff.tsx.org http://karpoff.welcome.to

 

Karpoff Spanish Tutor: Pagina dedicada a la dibulgacion de informacion en Castellano, sobre Ingenieria Inversa y Programacion. Email "Colabora con tus Proyectos"
www.000webhost.com