Karpoff Spanish Tutor

Programa:

El Cartero 2001


 

PROTECCION: Name / Serial
Objetivo: Encontrar el serial correcto
Descripcion: El Cartero es un pequeño programa que se encargara de leer el correo electrónico automáticamente cada cierto tiempo que tu le indicarás en la configuración del mismo; permite hasta un máximo de 10 cuentas.
Dificultad: Aficionado.
DOWNLOAD: http://www.sigeval.com/ec
Herramientas: TRW2000, W32dasmVB
CRACKER: ByTESCRK   FECHA: 26/11/2001

 

 INTRODUCCION

Bueno, pues primero decirles que tal vez esta sea una manera fácil de encontrar un serial, sin embargo, tal vez no sea la correcta o tal vez aplique únicamente a este programa en todo caso algo que casi nunca falla con algunos programas escritos en Visual Basic es el SmartCheck de Numega, para ver su uso pueden ver muchos tutoriales en el apartado para SmartCheck en la sección Crackeando de la web de Karpoff. Asimismo pueden consultar el manual de SiLvEr StOrM llamado "Crackeando Programas en Visual Basic". Pero mejor pasemos AL ATAKE

 

 AL ATAKE

Abramos el programa y vemos una bonita caja de texto con los campos NOMBRE: y CÓDIGO: ingresamos los valores que deseemos en mi caso "ByTESCRK" para el campo nombre y para el campo código "19770424", hacemos clic en Registrar

"REGISTRO INCORRECTO"

Lógico ¿no?, ahora abramos el W32DASM y busquemos la cadena que nos ha devuelto un error cuando hemos dado a Registrar, si ya lo hemos encontrado encontraremos lo siguiente


* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B4AD(C) <= Investigaremos por aquí
|
:0043B77B 8D953CFFFFFF lea edx, dword ptr [ebp+FFFFFF3C]
:0043B781 8D8D7CFFFFFF lea ecx, dword ptr [ebp+FFFFFF7C]
:0043B787 89BD54FFFFFF mov dword ptr [ebp+FFFFFF54], edi
:0043B78D 89B54CFFFFFF mov dword ptr [ebp+FFFFFF4C], esi
:0043B793 89BD64FFFFFF mov dword ptr [ebp+FFFFFF64], edi
:0043B799 89B55CFFFFFF mov dword ptr [ebp+FFFFFF5C], esi
:0043B79F 89BD74FFFFFF mov dword ptr [ebp+FFFFFF74], edi
:0043B7A5 89B56CFFFFFF mov dword ptr [ebp+FFFFFF6C], esi

* Possible StringData Ref from Code Obj ->"REGISTRO INCORRECTO"
|
:0043B7AB C78544FFFFFF50A84100 mov dword ptr [ebp+FFFFFF44], 0041A850 <= Aqui caemos
:0043B7B5 C7853CFFFFFF08000000 mov dword ptr [ebp+FFFFFF3C], 00000008

Al ir a 0043B4AD nos encontraremos con este código que no nos dice nada, pero buscaremos más arriba para ver si encontramos algo interesante, cómo sabemos y espero que ya se hayan leído el manual de SiLvEr StOrM ya sabrán lo que es un __vbaStrCmp, entonces buscaremos estas cadenas para ver si están cerca.

* Reference To: MSVBVM60.__vbaFreeObjList, Ord:0000h
|
:0043B4A2 E8C36AFCFF Call 00401F6A
:0043B4A7 83C428 add esp, 00000028
:0043B4AA 6685DB test bx, bx
:0043B4AD 0F84C8020000 je 0043B77B <= Aqui caemos
:0043B4B3 8D45BC lea eax, dword ptr [ebp-44]
:0043B4B6 50 push eax

De acuerdo ya encontramos las primeras coincidencias sobre ellas y vemos que hay un salto condicional que hace referencia desde 0043B424 como la rutina __vbaStrCmp está abajo quiere decir que o por lo menos así lo pienso que debería poner un bpx mejor en 0043B424 para que salte TRW cuando llegue a ese punto.

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0043B424(C) <= Vamos a poner un punto de ruptara aqui...
|
:0043B437 FF75A8 push [ebp-58]
:0043B43A FF75A4 push [ebp-5C]

* Reference To: MSVBVM60.__vbaStrCmp, Ord:0000h
|
:0043B43D E8F86AFCFF Call 00401F3A
:0043B442 FF759C push [ebp-64]
:0043B445 8BD8 mov ebx, eax
:0043B447 F7DB neg ebx
:0043B449 1BDB sbb ebx, ebx
:0043B44B 688C824100 push 0041828C
:0043B450 43 inc ebx
:0043B451 F7DB neg ebx

* Reference To: MSVBVM60.__vbaStrCmp, Ord:0000h
|
:0043B453 E8E26AFCFF Call 00401F3A
:0043B458 FF75A0 push [ebp-60]
:0043B45B F7D8 neg eax

Cargamos el programa en TRW y ponemos el bpx 0043B424, regresamos al programa he ingresamos nuestro Nombre y Código y hacemos clic en Registrar y automáticamente salta el TRW aquí...

0043B424 JNL 0043B437
0043B426 PUSH DWORD A0
0043B42B PUSH DWORD 00418278
0043B430 PUSH EBX
0043B431 PUSH EAX
0043B432 CALL MSVBVM60!__vbaHresultCheckObj
0043B437 PUSH DWORD [EBP-58]
0043B43A PUSH DWORD [EBP-5C]
0043B43D CALL MSVBVM60!__vbaStrCmp <= Aqui entramos
0043B442 PUSH DWORD [EBP-64]

Luego que hemos entrado a la llamada con F8 vamos al salto con F10

00401F34 JMP NEAR [00401170]
00401F3A JMP NEAR [004010D4] <= Saltamos
00401F40 JMP NEAR [0040101C]

Ya en el salto nos encontraremos con estas otras opciones entramos en 660470E0 que apunta a una rutina en el archivo OLEAUT32.dll en donde se hará la comparación del serial bueno y el maloso.

6602470F RET
MSVBVM60!__vbaStrCmp
66024710 PUSH DWORD [ESP+08]
66024714 PUSH DWORD [ESP+08]
66024718 PUSH BYTE +00
6602471A CALL MSVBVM60!__vbaStrCmp
6602471F RET
MSVBVM60!__vbaStrCmp
66024722 CMP DWORD [ESP+04],BYTE +02
66024727 JZ NEAR 660470E0 <= No entramos
6602472D PUSH DWORD 00030001
66024732 PUSH DWORD [ESP+08]
66024736 PUSH DWORD [ESP+10]
6602473A PUSH DWORD [ESP+18]
6602473E CALL OLEAUT32!VarBstrCmp <= Entramos
66024744 TEXT EAX,EAX

Aqui nos encontramos dentro de las entrañas del OLEAUT32 justo en la rutina VarBstrCmp

7FF02E2B JMP SHORT 7FF02E17
OLEAUT32!VarBstrCmp
7FF02E2D PUSH EBP
7FF02E2E MOV EBP,ESP
7FF02E30 PUSH ECX
7FF02E31 PUSH EBX
7FF02E32 PUSH ESI
7FF02E33 MOV ESI,EBP+08
7FF02E36 PUSH EDI <= Chequeamos el valor de ESI
7FF02E37 TEST ESI,ESI
7FF02E39 JNZ 7FF02E87

Al chequear el valor contenido en ESI con el comando D ESI nos encontramos lo siguiente... será nuestro serial, ¡CLARO! ni más ni menos, ¿que por qué está separado?, cómo sé que hoy si ya te leístes el manual de SiLvEr StOrM con título "Crackeando Programas en Visual Basic" sé que ya lo comprendes y sabes que es por culpa de la rutina MultiByteToWideChar.

00471A0C 4E 00 4E 00 4E 00 4E 00-2D 00 41 00 30 00 33 00 N.N.N.N.-.A.0.3.
00471A1C 38 00 2D 00 33 00 41 00-46 00 41 00 2D 00 36 00 8.-.3.A.F.A.-.6.
00471A2C 33 00 31 00 31 00 00 00-00 00 00 00 CD E5 0D A0 3.1.1.......-Õ.á
00471A3C 0C 00 45 00 3C 00 45 00-00 00 00 00 00 00 00 00 ..E.<.E.........

Luego que hayas ingresado el serial correcto verás que un archivo nuevo llamado reg.ec se ha creado en donde encontrarás la información que ingresastes en mi caso me aparece...

ByTESCRK
NNNN-A038-3AFA-6311

NOTA IMPORTANTE: Tienes que localizar por tu propia cuenta el serial correcto, he quitado a propósito los primeros cuatro caracteres alfanuméricos, ¿que querías el serial correcto? solo así, ¡no hombre! si no, no tiene chiste y sentiría que es por gusto el tiempo dedicado a este tuto, además me sentiría mal pués no estaría colaborando a tu desarrollo intelectual en este fino arte del cracking y además recordarte que...

"EL motivo de este tutorial es solo con el fin de conocer la seguridad en ciertos programas de manera educacional y tambien como diversión, si te ha gustado, este producto por favor COMPRALO, algunas veces... los autores merecen su dinero ;o)"

Saludos a mis buenos amigos Karpoff, Pr@fesor_X, CaoS ReptantE y a todos los crackers hispanohablantes, gracias por una vez más has llegado hasta aquí.

Si tienes alguna duda o comentario escríbeme a: ByTESCRK@iespana.es

ByTESCRK
 

 

 

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