Karpoff Spanish Tutor 1999-2002

Programa:

Magic Tweak v1.60


 

PROTECCION: Name / Serial
Objetivo: Obtener un serial válido
Descripcion: MagicTweak hace fácil el configurar millones de cosas en Windows y no necesita hacer modificaciones al registro manualmente.
Dificultad: Media.
DOWNLOAD: http://www.magictweak.com
Herramientas: TRW2000, W32dasm
CRACKER: ByTESCRK   FECHA: 13/12/2001

 

 INTRODUCCION

Bueno, después de algunos días que me he hecho un tanto el desentendido en esto he regresado a crackear este programa y la verdad es que he estado viendo algunos otros de los cuales ya haré un tuto, mientras que aquí les cocino este otro.

Este programa es muy práctico, puede sacarlo a uno de apuros realmente, más sin embargo, cómo siempre lo he dicho las protecciones algunas veces no son apropiadas para ciertos programas, la verdad es que me parece un tanto inconcebible el precio de esta utilería que aparte de ocupar espacio en tu disco no es más ni menos una utilería, que bien, pasemos ahora a lo nuestro...

 

 AL ATAKE

Cómo siempre cargamos el programa y nos vamos al punto de registrar que tiene y vemos que en la pantalla de About nos aparece un botón Enter Code lo presionamos y luego nos aparece una ventanita con el espacio para ingresar nuestro nombre y serial, al ingresarlos nos dice

"Thanks for your registering.Please restart the program to verify the registration code."

Clásico truco en algunos programas hoy en día, vamos a desensamblar en W32DASM y buscamos la cadena, cuando la hallemos haremos doble clic sobre ella y caeremos por esta parte de código

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00423DE3(C) <= Rondamos por aqui...
|
:00423DFD 8B86F4050000 mov eax, dword ptr [esi+000005F4]
:00423E03 57 push edi

* Reference To: USER32.wsprintfA, Ord:02ACh
|
:00423E04 8B3D30864600 mov edi, dword ptr [00468630]
:00423E0A 8D4C2408 lea ecx, dword ptr [esp+08]
:00423E0E 50 push eax
:00423E0F 51 push ecx
:00423E10 FFD7 call edi
:00423E12 8B96F0050000 mov edx, dword ptr [esi+000005F0]
:00423E18 8D442438 lea eax, dword ptr [esp+38]
:00423E1C 52 push edx
:00423E1D 50 push eax
:00423E1E FFD7 call edi
:00423E20 83C410 add esp, 00000010
:00423E23 8BCE mov ecx, esi
:00423E25 6A40 push 00000040

* Possible StringData Ref from Data Obj ->"Register"
|
:00423E27 68EC134800 push 004813EC

* Possible StringData Ref from Data Obj ->"Thanks for your registering.Please "
->"restart the program to verify "
->"the registration code."
|
:00423E2C 689C1F4800 push 00481F9C <= Caemos aqui
:00423E31 E8F5270200 call 0044662B
:00423E36 8B8EF4050000 mov ecx, dword ptr [esi+000005F4]
* Reference To: KERNEL32.WritePrivateProfileStringA, Ord:02E5h
|
:00423E3C 8B3D60824600 mov edi, dword ptr [00468260]

* Possible StringData Ref from Data Obj ->"Mgreg.ini" <= Aqui se guarda el serial
|
:00423E42 680CF14700 push 0047F10C
:00423E47 51 push ecx

Al ir a la dirección 00423DE3 encontramos este código (NOTA: punto de ruptura en 00423DD9), vamos a ir a ver que hay en 00433227

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00423DB3(C)
|
:00423DCD 8B86F0050000 mov eax, dword ptr [esi+000005F0]
:00423DD3 68E04D4800 push 00484DE0
:00423DD8 50 push eax
:00423DD9 E849F40000 call 00433227 <= Se genera el serial...
:00423DDE 83C408 add esp, 00000008
:00423DE1 85C0 test eax, eax
:00423DE3 7518 jne 00423DFD <= Aqui da el Thank you...
:00423DE5 6A10 push 00000010

Bueno hemos llegado aquí y EAX trae el serial y EDX el nombre

:00433227 55 push ebp
:00433228 8BEC mov ebp, esp
:0043322A 833DFC84480000 cmp dword ptr [004884FC], 00000000
:00433231 53 push ebx
:00433232 56 push esi
:00433233 57 push edi
:00433234 7512 jne 00433248
:00433236 FF750C push [ebp+0C]
:00433239 FF7508 push [ebp+08]
:0043323C E8AF400000 call 004372F0 <= Aqui entramos
:00433241 59 pop ecx
:00433242 59 pop ecx
:00433243 E989000000 jmp 004332D1 <= A este salto volveremos

Hemos ido al salto

:004372F0 8B542404 mov edx, dword ptr [esp+04] <= EDX recibe el serial
:004372F4 8B4C2408 mov ecx, dword ptr [esp+08] <= ECX recibe un valor 0
:004372F8 F7C203000000 test edx, 00000003
:004372FE 753C jne 0043733C

:00437300 8B02 mov eax, dword ptr [edx] <= Extrae el primer caracter del serial
:00437302 3A01 cmp al, byte ptr [ecx] <= Compara el valor de EAX con el de ECX
:00437304 752E jne 00437334 <= Como no son iguales vamos a 00437334
:00437306 0AC0 or al, al
:00437308 7426 je 00437330

Ya hemos ido y...

:00437334 1BC0 sbb eax, eax <= Aqui caemos...
:00437336 D1E0 shl eax, 1
:00437338 40 inc eax
:00437339 C3 ret <= Regresamos

Hemos vuelto a la rutina anterior

:00433239 FF7508 push [ebp+08]
:0043323C E8AF400000 call 004372F0 <= Aqui entramos
:00433241 59 pop ecx <= Aqui regresamos
:00433242 59 pop ecx
:00433243 E989000000 jmp 004332D1 <= Vamos a este salto

Luego de entrar en el salto hayamos esto...

:004332D1 5F pop edi <= A aqui saltamos...
:004332D2 5E pop esi
:004332D3 5B pop ebx
:004332D4 5D pop ebp
:004332D5 C3 ret <= Regresamos y nos da el Thanks for your...

Esto no está haciendo nada bueno... nos vamos a ver en toda la entrada al programa, cargamos el programa nuevamente y empezamos a tracear desde el OEP y vemos que el programa llega hasta aqui (si tienes duda en esto consulta mi tuto sobre WebScope v3.8a)

:00433CCE 56 push esi
:00433CCF 56 push esi
:00433CD0 FF1568834600 Call dword ptr [00468368] => KERNEL32.GetModuleHandleA
:00433CD6 50 push eax
:00433CD7 E86BDB0000 call 00441847 <= Entramos aquí...

Nos encontramos con esto otro...

:00441847 FF742410 push [esp+10]
:0044184B FF742410 push [esp+10]
:0044184F FF742410 push [esp+10]
:00441853 FF742410 push [esp+10]
:00441857 E8F0A00000 call 0044B94C <= Entramos...
:0044185C C21000 ret 0010

Vemos un montón de código, con llamadas y saltos, pero hasta en 0041C76C encontramos algo
interesante y no es sino hasta entre 0041D136 hasta 0041D179 en donde se genera el serial correcto... entonces cuando lleguemos al punto siguiente es que...

:0041D177 40 inc eax
:0041D178 49 dec ecx
:0041D179 75BB jne 0041D136
:0041D17B 8BB42494000000 mov esi, dword ptr [esp+00000094] <= Obtendremos nuestro serial válido...

Ahora ya tenemos el serial correcto y vamos a ingresarlo, y podremos usar el programa de manera más libre, aunque sin embargo quiero que recuerdes, lo de 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 ayuda en la realización de este tuto) y a todos los crackers hispanohablantes.

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