Karpoff Spanish Tutor 1999-2002

Programa:

Printer Express v1.0


 

PROTECCION: Name / Serial
Objetivo: Hacer un Keygen
Descripcion: PrinterExpress es un programa muy útil para todo aquel que trabaja con diferentes impresoras en una red.
Dificultad: Novato.
DOWNLOAD: http://www.SouthByPC.com
Herramientas: TRW2000, W32dasm
CRACKER: ByTESCRK   FECHA: 26/11/2001

 

 INTRODUCCION

Bueno, pues aquí estamos nuevamente para ver una protección más esta básicamente es la misma que tiene el SuperCleaner y algunos otros productos de esta empresa, algunos que hasta hace algún tiempo habian sido gratuitos, ahora ya van desde los $8 a los 20$.

Bueno así pudieramos seguir hablando de muchas cosas sobre los productos que realmente esta introducción se haría bastante larga, lo importante del caso es 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 gusta, este producto por favor COMPRALO, algunas veces... los autores merecen su dinero ;o)"

 

 AL ATAKE

Carguemos el programa y hacemos clic en Enter Code... sale otra ventana y nos dice que ingresemos nuestro nombre y el código, en mi caso los de siempre, hacemos clic en OK y el error

Incorrect registration code!

Abrimos el W32DASM y vamos a buscar esto en las cadenas de referencia luego de desensamblar el programa y encontramos esto al hacer doble clic en la cadena...

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00402B1F(C) <= Investigaremos por aqui
|
:00402B71 6A00 push 00000000

* Possible StringData Ref from Data Obj ->"PrinterExpress"
|
:00402B73 6870904000 push 00409070

* Possible StringData Ref from Data Obj ->"Incorrect registration code!"
|
:00402B78 68A0924000 push 004092A0 <= Aquí caemos
:00402B7D 56 push esi

* Reference To: USER32.MessageBoxA, Ord:01C3h
|
:00402B7E FF15A8714000 Call dword ptr [004071A8]

* Possible Reference to String Resource ID=00001: "Registered to "
|
:00402B84 B801000000 mov eax, 00000001
:00402B89 5E pop esi
:00402B8A 81C400020000 add esp, 00000200
:00402B90 C21000 ret 0010


Al ir a 00402B1F nos encontramos con esto...

:00402B12 50 push eax
:00402B13 51 push ecx
:00402B14 E867020000 call 00402D80 <= Aqui se genera y compara el serial
:00402B19 83C408 add esp, 00000008
:00402B1C 85C0 test eax, eax
:00402B1E 5F pop edi
:00402B1F 7450 je 00402B71 <= Aqui llegamos
:00402B21 8D542404 lea edx, dword ptr [esp+04]


Abrimos TRW y ponemos un punto de ruptura en 00402B14, luego de que hayamos ingresado nuestros datos hacemos clic en OK y automáticamente salta el TRW y llegamos aqui.

:00402D80 81EC00010000 sub esp, 00000100
:00402D86 A070B74000 mov al, byte ptr [0040B770]
:00402D8B 56 push esi
:00402D8C 57 push edi
:00402D8D 88442408 mov byte ptr [esp+08], al
:00402D91 B93F000000 mov ecx, 0000003F
:00402D96 33C0 xor eax, eax
:00402D98 8D7C2409 lea edi, dword ptr [esp+09]
:00402D9C 8B94240C010000 mov edx, dword ptr [esp+0000010C]
:00402DA3 F3 repz
:00402DA4 AB stosd
:00402DA5 66AB stosw
:00402DA7 8D4C2408 lea ecx, dword ptr [esp+08]
:00402DAB 51 push ecx
:00402DAC 52 push edx
:00402DAD AA stosb
:00402DAE E83D010000 call 00402EF0 <= Entramos aquí
:00402DB3 8BB42418010000 mov esi, dword ptr [esp+00000118]
:00402DBA 56 push esi
:00402DBB E890000000 call 00402E50
:00402DC0 8D442414 lea eax, dword ptr [esp+14]


Al entrar en la rutina vemos esto...

:00402EF0 81EC00010000 sub esp, 00000100
:00402EF6 A070B74000 mov al, byte ptr [0040B770]
:00402EFB 53 push ebx
:00402EFC 55 push ebp
...
...
...
:00402F1A 57 push edi
:00402F1B FF15CC704000 Call dword ptr [004070CC] <= Cuenta el tamaño del nombre
:00402F21 8BF0 mov esi, eax
:00402F23 33C9 xor ecx, ecx
:00402F25 33C0 xor eax, eax
:00402F27 85F6 test esi, esi
:00402F29 7E13 jle 00402F3E
:00402F2B 8B1590924000 mov edx, dword ptr [00409290] <= Asigna el valor de 18h a EDX
:00402F31 0FBE1C38 movsx ebx, byte ptr [eax+edi] <= Extrae letra por letra
:00402F35 03DA add ebx, edx <= EBX = EBX + EDX
:00402F37 03CB add ecx, ebx <= ECX = ECX + EBX
:00402F39 40 inc eax <= Incrementa EAX en 1
:00402F3A 3BC6 cmp eax, esi <= Compara si se ha completado el nombre
:00402F3C 7CF3 jl 00402F31 <= Si no regresa a 00402F31
:00402F3E 8B9C2418010000 mov ebx, dword ptr [esp+00000118]
:00402F45 51 push ecx <= ECX a memoria
:00402F46 68D4924000 push 004092D4
:00402F4B 53 push ebx
:00402F4C FF151C714000 Call dword ptr [0040711C] <= Se agrega un guión al valor ECX en dec ej. NNN-
:00402F52 83C40C add esp, 0000000C
:00402F55 33C9 xor ecx, ecx
:00402F57 33C0 xor eax, eax
:00402F59 85F6 test esi, esi
:00402F5B 7E14 jle 00402F71
:00402F5D 8B1594924000 mov edx, dword ptr [00409294] <= Se le asigna el valor de 27h a EDX
:00402F63 0FBE2C38 movsx ebp, byte ptr [eax+edi] <= Extrae letra por letra
:00402F67 0FAFEA imul ebp, edx <= EBP = EBP * EDX
:00402F6A 03CD add ecx, ebp <= ECX = ECX + EBP
:00402F6C 40 inc eax <= Incrementa EAX en 1
:00402F6D 3BC6 cmp eax, esi <= Compara si se ha completado el nombre
:00402F6F 7CF2 jl 00402F63 <= Si no regresa a 00402F63
:00402F71 51 push ecx
:00402F72 8D4C2414 lea ecx, dword ptr [esp+14]
:00402F76 68D4924000 push 004092D4
:00402F7B 51 push ecx
:00402F7C FF151C714000 Call dword ptr [0040711C] <= Se agrega un guión al valor ECX en dec 25233-
:00402F82 83C40C add esp, 0000000C
:00402F85 8D542410 lea edx, dword ptr [esp+10] <= Valor de ECX más el guión (25233-)
:00402F89 52 push edx
:00402F8A 53 push ebx
:00402F8B FF15D0704000 Call dword ptr [004070D0] <= Se concatenan los valores NNN-25233-
:00402F91 33C9 xor ecx, ecx
:00402F93 33C0 xor eax, eax
:00402F95 85F6 test esi, esi
:00402F97 7E13 jle 00402FAC
:00402F99 8B1598924000 mov edx, dword ptr [00409298] <= Se le asigna el valor de 1Ah a EDX
:00402F9F 0FBE2C38 movsx ebp, byte ptr [eax+edi] <= Extrae letra por letra
:00402FA3 03EA add ebp, edx <= EBP = EBP + EDX
:00402FA5 03CD add ecx, ebp <= ECX = ECX + EBP
:00402FA7 40 inc eax <= Incrementa EAX en 1
:00402FA8 3BC6 cmp eax, esi <= Compara si se ha completado el nombre
:00402FAA 7CF3 jl 00402F9F <= Si no regresa a 00402F9F
:00402FAC 51 push ecx
:00402FAD 8D442414 lea eax, dword ptr [esp+14]
:00402FB1 68D4924000 push 004092D4
:00402FB6 50 push eax
:00402FB7 FF151C714000 Call dword ptr [0040711C] <= Se agrega guión al valor de ECX en decimal
:00402FBD 83C40C add esp, 0000000C
:00402FC0 8D4C2410 lea ecx, dword ptr [esp+10]
:00402FC4 51 push ecx
:00402FC5 53 push ebx
:00402FC6 FF15D0704000 Call dword ptr [004070D0] <= Se unen los valores NNN-25233-855-
:00402FCC 33C9 xor ecx, ecx
:00402FCE 33C0 xor eax, eax
:00402FD0 85F6 test esi, esi
:00402FD2 7E14 jle 00402FE8
:00402FD4 8B159C924000 mov edx, dword ptr [0040929C] <= Se le asigna el valor de 01h a EDX
:00402FDA 0FBE2C38 movsx ebp, byte ptr [eax+edi] <= Extrae letra por letra
:00402FDE 0FAFEA imul ebp, edx <= EBP = EBP * EDX
:00402FE1 03CD add ecx, ebp <= ECX = ECX + EBP
:00402FE3 40 inc eax <= Incrementa EAX en 1
:00402FE4 3BC6 cmp eax, esi <= Compara si se ha completado el nombre
:00402FE6 7CF2 jl 00402FDA <= Si no regresa a 00402FDA
:00402FE8 51 push ecx
:00402FE9 8D542414 lea edx, dword ptr [esp+14]
:00402FED 68D0924000 push 004092D0
:00402FF2 52 push edx
:00402FF3 FF151C714000 Call dword ptr [0040711C] <= Se transforma el valor a decimal
:00402FF9 83C40C add esp, 0000000C
:00402FFC 8D442410 lea eax, dword ptr [esp+10]
:00403000 50 push eax
:00403001 53 push ebx
:00403002 FF15D0704000 Call dword ptr [004070D0] <= Se unen los valores NNN-25233-855-647
:00403008 5F pop edi
:00403009 5E pop esi
:0040300A 5D pop ebp
:0040300B 5B pop ebx
:0040300C 81C400010000 add esp, 00000100
:00403012 C3 ret


Eso es todo, ahora puedes disfrutar del programa sin molestos recordatorios, tan solo este que te doy...

"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 gusta, 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, en especial a ti por que has llegado hasta una vez más 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