Karpoff Spanish Tutor 1999-2001

Programa:

Text Maid v1.4 (y de colado My Scribe v1.5)


 

PROTECCION: Name / Serial, Limitación de Tiempo
Objetivo: Hacer un Keygen
Descripcion: Pequeño programa para extraer caracteres extras en los mensajes de correo electrónico.
Dificultad: Novato.
DOWNLOAD: http://home.earthlink.net/~djkoga
Herramientas: TRW2000, W32dasm
CRACKER: ByTESCRK   FECHA: 31/09/2001

 

 INTRODUCCION

Debido a la falta de honradez de algunos programadores he desistido en crear este tutorial, por ejemplo, he puesto este programa y ustedes al final sacarán sus conclusiones si realmente vale su precio o no, ($14.00) por un programa que únicamente lo que hace es extraer unos cuantos caracteres del texto de un correo electrónico, bueno, no lo tomen tan apecho este es tan solo mi punto de vista, si ha algunos ofendo disculpen pero no entiendo por qué cobrar por una utilería que debiera de ser gratuita.

Como al principio de colado nos llevaremos el programa My Scribe dentro de nuestros pies... ;oD

 

 AL ATAKE

Antes que nada descargarnos nuestra victima desde su güeb, si ya está, lo instalamos y lo inspeccionamos, nos vamos como siempre al Help > About Text Maid... y vemos nuestro querido amigo de siempre... el cuadro de registro de nuestra victima...

Registered to: Unlicensed
License key:

Ok ahora ingresamos en el primero nuestro nombre, en mi caso ByTESCRK y de licencia 19772404 (:oD gracias CaoS por tu consejo), ahora clic en OK y salta el error...

Invalid license key for specified email address


Bueno ahora ya sabemos que es una dirección de correo, clic en Aceptar y colocamos nuestra direccón de correo, en mi caso ByTESCRK@iespana.es

Vamos a desensamblar a nuestra victima y buscamos en las Reference Strings nuestros valores y vemos que caemos aqui...

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004015E2(C)
|
:0040163B 6A00 push 00000000
:0040163D 6A30 push 00000030

* Possible StringData Ref from Data Obj ->"Invalid license key for specified "
->"email address."
|
:0040163F 68C8104100 push 004110C8    <= Aqui caemos


Vamos con Goto Code Location al punto 004015E2 y vemos que caemos en...

:004015D5 51 push ecx
:004015D6 52 push edx
:004015D7 8D4C2414 lea ecx, dword ptr [esp+14]
:004015DB E810310000 call 004046F0    <= Aqui vamos a investigar
:004015E0 85C0 test eax, eax
:004015E2 7457 je 0040163B    <= De aqui va al mensaje de error
:004015E4 8D442404 lea eax, dword ptr [esp+04]
:004015E8 8D4C2408 lea ecx, dword ptr [esp+08]
:004015EC 50 push eax


Vamos a cargar ahora el TRW2000, buscamos nuestra victima y le damos clic a Load y ponemos un punto de ruptura en 004015DB (@j@ cuando estemos traceando veamos que sea en el archivo textmaid.exe) y al hacer clic en el botón OK para registrar (ya que hemos ingresado nuevamente los datos), vemos que caemos en la llamada a 004046F0 y entramos con F8... luego seguimos traceando con F10


:004046F0 8B542404 mov edx, dword ptr [esp+04]
:004046F4 8D4110 lea eax, dword ptr [ecx+10]
:004046F7 56 push esi
:004046F8 50 push eax
:004046F9 8D44240C lea eax, dword ptr [esp+0C]
:004046FD 52 push edx
:004046FE 50 push eax
:004046FF E87CD2FFFF call 00401980    <= Entramos aqui...
:00404704 8B4C240C mov ecx, dword ptr [esp+0C]
:00404708 8B00 mov eax, dword ptr [eax]
:0040470A 8B09 mov ecx, dword ptr [ecx]
:0040470C 51 push ecx
:0040470D 50 push eax
:0040470E FF15F0C74000 Call dword ptr [0040C7F0]    <= Aqui se compara el serial malo y el bueno
:00404714 83C408 add esp, 00000008
:00404717 8D4C2408 lea ecx, dword ptr [esp+08]
:0040471B 85C0 test eax, eax
:0040471D 0F94C2 sete dl
:00404720 81E2FF000000 and edx, 000000FF
:00404726 8BF2 mov esi, edx


Al entrar en 00401980 vemos esto...


:00401980 6AFF push FFFFFFFF
:00401982 680FA24000 push 0040A20F
:00401987 64A100000000 mov eax, dword ptr fs:[00000000]
:0040198D 50 push eax
:0040198E 64892500000000 mov dword ptr fs:[00000000], esp
:00401995 51 push ecx
:00401996 8B44241C mov eax, dword ptr [esp+1C]
:0040199A 55 push ebp
:0040199B 56 push esi
:0040199C 57 push edi
:0040199D 8B30 mov esi, dword ptr [eax]
:0040199F 33C9 xor ecx, ecx
:004019A1 33C0 xor eax, eax
:004019A3 C744240C00000000 mov [esp+0C], 00000000
:004019AB 8B7EF8 mov edi, dword ptr [esi-08]
:004019AE 85FF test edi, edi
:004019B0 7E13 jle 004019C5
:004019B2 0FBE1406 movsx edx, byte ptr [esi+eax]    <= Extrae letra por letra de una palabra clave
:004019B6 8BEA mov ebp, edx    <= Mueve el valor en DEC a ebp
:004019B8 C1E505 shl ebp, 05    <= Multiplica el valor en DEC por 2, cinco veces
:004019BB 03E9 add ebp, ecx    <= Suma EBP + ECX
:004019BD 40 inc eax    <= Incrementa EAX en uno
:004019BE 3BC7 cmp eax, edi    <= EDI = Longitud de la palabra clave
:004019C0 8D0C2A lea ecx, dword ptr [edx+ebp]    <= ECX = EDX + EBP
:004019C3 7CED jl 004019B2    <= Si no es menor regresa a 004019B2
:004019C5 8B542424 mov edx, dword ptr [esp+24]
:004019C9 33FF xor edi, edi
:004019CB 33C0 xor eax, eax
:004019CD 8B12 mov edx, dword ptr [edx]    <= Nuestro email
:004019CF 8B72F8 mov esi, dword ptr [edx-08]    <= Longitud del email
:004019D2 85F6 test esi, esi
:004019D4 7E0E jle 004019E4
:004019D6 0FBE2C02 movsx ebp, byte ptr [edx+eax]    <= Extrae letra por letra del email
:004019DA 0FAFE9 imul ebp, ecx    <= El valor en DEC de la letra por el resultado anterior
:004019DD 03FD add edi, ebp    <= Acumula en EDI
:004019DF 40 inc eax    <= Incrementa EAX en uno
:004019E0 3BC6 cmp eax, esi    <= Compara EAX y ESI
:004019E2 7CF2 jl 004019D6    <= Si no coinciden regresa a finalizar el proceso
:004019E4 8D4C2428 lea ecx, dword ptr [esp+28]    <= Aqui está nuestro serial válido en HEX
:004019E8 E8F77A0000 Call 004094E4
:004019ED 57 push edi
:004019EE 8D44242C lea eax, dword ptr [esp+2C]
:004019F2 BD01000000 mov ebp, 00000001


Bueno así damos por terminado nuestro traceo, teniendo nuestro serial en la mano podemos generar nuestro keygen o podemos registrar nuestro programa y eso es todo, nuestro serial debemos ingresarlo en el programa en valor HEXadecimal.

Nuestra rutina principal del keygen quedaría así...

Private Sub Genera(MiNombre As String)
      MiTexto = "Coloqueaquilapalabraclave"
      For I = 1 To Len(MiTexto)
          EAX = Asc(Mid(MiTexto, I, 1))
          AX = EAX
          For II = 1 To 5
              EAX = EAX * 2
          Next
          EBX = EBX + EAX
          EBX = EBX + AX
      Next
      For I = 1 To Len(MiNombre)
          EAX = Asc(Mid(MiNombre, I, 1))
          ECX = ECX + (EBX * EAX)
      Next
      Text2.Text = LCase(Hex(ECX))    <= @j@ el serial correcto debe estar en letras minúsculas
End Sub

      

Una vez hayamos generado este podemos, cambiar tambien la palabra clave del programa My Scribe v1.5 de este mismo autor y tendremos un serial para registrarnos, pero eso ya les queda a ustedes. Y como siempre...

"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 ha USTED, le gusta el producto por favor COMPRELO, algunas veces... los autores merecen su dinero ;o)"

Saludos a mis buenos amigos Karpoff, Pr@fesor_X, CaoS ReptantE (¡Gracias por tus consejos!) y a todos los crackers hispanohablantes, en especial a ti por que 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