CrackME#1 by Thunder

Iniciado por ThunderCls, 4 Agosto 2009, 19:23 PM

0 Miembros y 1 Visitante están viendo este tema.

ThunderCls

bueno amigo, lo podrias subir a otro lugar?, es que no estoy pudiendo descargar de MEGAUP en estos dias, y no lo he podido ver, gracias.
Por cierto, podrias hacer un minitute o un pequeño recuento de como lo haz logrado?, para que todos aprendan, claro  ;D
salu2 y felicidades
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

PeterPunk77

ThUnDeR_07, ¿te vale rapidshare?
http://rapidshare.com/files/296817429/Keygen_for_Thunder_s_Crackme__1_by_PeterPunk.zip.html

Ahora mismo no me apetece mucho escribir un tuto (tengo pendientes varios desde hace meses para crackmes.de, aunque igual ya están resueltos), pero aquí va un mini resumen:
- Desempaqué el .exe con el upx (parámetro -d)
- Ejecuté el crackme con el Olly y tras probarlo, busqué todas las cadenas.
- Había referencias a mi nick en 0x47D1A2 y al mostrarlo en el dump, sorpresa, cadena "REGISTRADO . . ." en 0x47D1C3.
- Marcamos la primera "R" de la cadena en el dump y buscamos las referencias a esta cadena (CTRL+R):
Código (asm) [Seleccionar]
References in Crackme_:.text to 0047D1C3..0047D1C3, item 0
Address=00402FCE
Disassembly=CMP DL,[ECX+47D1C3]

- Estudiamos esa parte del código:
Código (asm) [Seleccionar]
00402F84   |> /8B55 E4                  /MOV EDX,[EBP-1C]
00402F87   |. |33C9                     |XOR ECX,ECX                            ;  (Initial CPU selection)
00402F89   |. |8A4C15 E8                |MOV CL,[EBP+EDX-18]
00402F8D   |. |81C1 79FFFFFF            |ADD ECX,-87
00402F93   |. |894D FC                  |MOV [EBP-4],ECX
00402F96   |. |330D 8CD14700            |XOR ECX,[47D18C]
00402F9C   |. |894D FC                  |MOV [EBP-4],ECX
00402F9F   |. |8A45 FC                  |MOV AL,[EBP-4]
00402FA2   |. |8B55 E4                  |MOV EDX,[EBP-1C]
00402FA5   |. |8882 B2D14700            |MOV [EDX+47D1B2],AL
00402FAB   |. |FF45 E4                  |INC DWORD PTR [EBP-1C]
00402FAE   |> |8D4D E8                   LEA ECX,[EBP-18]
00402FB1   |. |51                       |PUSH ECX
00402FB2   |. |E8 09B50500              |CALL 0045E4C0
00402FB7   |. |59                       |POP ECX
00402FB8   |. |3B45 E4                  |CMP EAX,[EBP-1C]
00402FBB   |.^\77 C7                    \JA SHORT 00402F84
00402FBD   |.  EB 03                    JMP SHORT 00402FC2
00402FBF   |>  FF45 F8                  /INC DWORD PTR [EBP-8]
00402FC2   |>  8B45 F8                   MOV EAX,[EBP-8]
00402FC5   |.  8A90 B2D14700            |MOV DL,[EAX+47D1B2]
00402FCB   |.  8B4D F8                  |MOV ECX,[EBP-8]
00402FCE   |.  3A91 C3D14700            |CMP DL,[ECX+47D1C3]
00402FD4   |.^ 74 E9                    \JE SHORT 00402FBF

- Con una ojeada vemos que compara la cadena con otra que varía según un xor en la línea:
Código (asm) [Seleccionar]
00402F96   |.  330D 8CD14700            |XOR ECX,[47D18C]
- Para que las dos cadenas sean iguales necesitamos un "xor ecx, 7"
- Buscamos las referencias a 0x47D18C:
References in Crackme_:.text to 0047D18C
Address     Disassembly                                 Comment
00401AB9    MOV [47D18C],EDX
00401B0F    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
004020A5    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
0040252A    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
0040281E    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
004029C4    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
00402CC0    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
00402ED8    INC DWORD PTR [47D18C]                      DS:[0047D18C]=00000001
00402F96    XOR ECX,[47D18C]                            (Initial CPU selection)

- Estudiamos el código próximo a todas las referencias que hagan "INC DWORD PTR [47D18C]" y ahí encontraremos fácilmente las características del serial:
1 - El nombre introducido debe tener entre 5 y 15 caracteres
2 - La longitud del serial es de 21
3 - Los caracteres 3, 11y 19 del serial son guiones
4 - Hay más caracteres fijos: los dos primeros son "TH", los anteriores al segundo guion seon "UN", "D3" los anteriores al tercer guion y el último es una "R": TH-?????UN-?????D3-?R
5 - El penúltimo caracter es la longitud del nombre
6 - Los cinco primeros que faltan son suma_asciis_nombre + 0x1987 xor 0xBADD + 0xDEAD en hexadecimal
7 - Los restantes son suma_asciis_nombre + 0x2009 xor 0xDADD + 0xF00D en hexadecimal

ThunderCls

#12
muy bien PeterPunk77, te lo has trabajado muy bien  ;)
bueno, pues eso, felicitarte por tu trabajo.....eres el primero
que lo resuelve y con keygen y todo  ;D
saludos

[Resuelto Por]
-PeterPunk77



-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/