--

ESTUDIO COLECTIVO DE DESPROTECCIONES
WKT Tutorialz Site
WKT
progrAmA Slim Show 3.1 W
DEsCripCión Interactive Multimedia Authoring Software for MS-Windows
tipo Shareware
url http://www.pcww.com
protECCión Algunas Limitaciones si no estás registrado.
DiFiCultAD 1) Principiante, 2) Amateur, 3) Aficionado, 4) Profesional, 5) Especialista
hErrAmiEntAs SoftIce, IDA Pro
CrACkEr Mr.Pink
FEChA 29 de Septiembre de 1998

Introducción
Saludos.
Cumpliendo un encargito de "Estado+Porcino", yo Mr.Pink resuelve un facil puzzle.
Crackear Slim Show 3.1.
Site:www.pcww.com

Al Atake
Buscamos la cadena Shareware con un buscador de Cadenas como el Search and Replace.
La encontramos en el ejecutable. Bien, la protección no está diseminada.
Desensamblamos con el Wdasm8.9 (si no tienes esta version completa del desensamblador, buscadlo esta por todas partes).En "String Refereces" no encontramos Shareware.
Así pues cogemos la artillería pesada, el IDA Pro.
Desensamblamos y buscamos la cadena "Shareware". Con cuidado, ya que las cadenas aparecen en vertical:
	0:0 S
	0:0 H
	0:0 A
	0:0 R
	0:0 E
	0:0 W
	0:0 A
	0:0 R
	0:0 E
Y esto es lo que encontramos:
dseg03:2B56 57		      db  57h ;	W
dseg03:2B57 41		      db  41h ;	A
dseg03:2B58 52		      db  52h ;	R
dseg03:2B59 4E		      db  4Eh ;	N
dseg03:2B5A 49		      db  49h ;	I
dseg03:2B5B 4E		      db  4Eh ;	N
dseg03:2B5C 47		      db  47h ;	G
dseg03:2B5D 00		      db    0 ;	 
dseg03:2B5E 43		      db  43h ;	C
dseg03:2B5F 41		      db  41h ;	A
dseg03:2B60 4E		      db  4Eh ;	N
dseg03:2B61 20		      db  20h ;	 
dseg03:2B62 4F		      db  4Fh ;	O
dseg03:2B63 4E		      db  4Eh ;	N
dseg03:2B64 4C		      db  4Ch ;	L
dseg03:2B65 59		      db  59h ;	Y
dseg03:2B66 20		      db  20h ;	 
dseg03:2B67 53		      db  53h ;	S
dseg03:2B68 41		      db  41h ;	A
dseg03:2B69 56		      db  56h ;	V
dseg03:2B6A 45		      db  45h ;	E
dseg03:2B6B 20		      db  20h ;	 
dseg03:2B6C 55		      db  55h ;	U
dseg03:2B6D 50		      db  50h ;	P
dseg03:2B6E 20		      db  20h ;	 
dseg03:2B6F 54		      db  54h ;	T
dseg03:2B70 4F		      db  4Fh ;	O
dseg03:2B71 20		      db  20h ;	 
dseg03:2B72 32		      db  32h ;	2
dseg03:2B73 35		      db  35h ;	5
dseg03:2B74 20		      db  20h ;	 
dseg03:2B75 53		      db  53h ;	S
dseg03:2B76 43		      db  43h ;	C
dseg03:2B77 45		      db  45h ;	E
dseg03:2B78 4E		      db  4Eh ;	N
dseg03:2B79 45		      db  45h ;	E
dseg03:2B7A 53		      db  53h ;	S
/**********************************/
dseg03:3399 54		      db  54h ;	T
dseg03:339A 68		      db  68h ;	h
dseg03:339B 69		      db  69h ;	i
dseg03:339C 73		      db  73h ;	s
dseg03:339D 20		      db  20h ;	 
dseg03:339E 69		      db  69h ;	i
dseg03:339F 73		      db  73h ;	s
dseg03:33A0 20		      db  20h ;	 
dseg03:33A1 61		      db  61h ;	a
dseg03:33A2 20		      db  20h ;	 
dseg03:33A3 73		      db  73h ;	s
dseg03:33A4 68		      db  68h ;	h
dseg03:33A5 61		      db  61h ;	a
dseg03:33A6 72		      db  72h ;	r
dseg03:33A7 65		      db  65h ;	e
dseg03:33A8 77		      db  77h ;	w
dseg03:33A9 61		      db  61h ;	a
dseg03:33AA 72		      db  72h ;	r
dseg03:33AB 65		      db  65h ;	e
dseg03:33AC 20		      db  20h ;	 
dseg03:33AD 65		      db  65h ;	e
dseg03:33AE 64		      db  64h ;	d
dseg03:33AF 69		      db  69h ;	i
dseg03:33B0 74		      db  74h ;	t
dseg03:33B1 69		      db  69h ;	i
dseg03:33B2 6F		      db  6Fh ;	o
dseg03:33B3 6E		      db  6Eh ;	n
/*******************************************************/
dseg03:345A 54		      db  54h ;	T
dseg03:345B 68		      db  68h ;	h
dseg03:345C 65		      db  65h ;	e
dseg03:345D 20		      db  20h ;	 
dseg03:345E 73		      db  73h ;	s
dseg03:345F 68		      db  68h ;	h
dseg03:3460 61		      db  61h ;	a
dseg03:3461 72		      db  72h ;	r
dseg03:3462 65		      db  65h ;	e
dseg03:3463 77		      db  77h ;	w
dseg03:3464 61		      db  61h ;	a
dseg03:3465 72		      db  72h ;	r
dseg03:3466 65		      db  65h ;	e
dseg03:3467 20		      db  20h ;	 
dseg03:3468 65		      db  65h ;	e
dseg03:3469 64		      db  64h ;	d
dseg03:346A 69		      db  69h ;	i
dseg03:346B 74		      db  74h ;	t
dseg03:346C 69		      db  69h ;	i
dseg03:346D 6F		      db  6Fh ;	o
dseg03:346E 6E		      db  6Eh ;	n
/********************************************************/
Comenzemos por quitar la restricción de 25 escenas.
Para ello buscamos 2B56 (Offset del mensaje de Error de 25 escenas)
Lo encontramos en :
cseg01:460A	      loc_0_460A:    ; CODE XREF: sub_0_43D2+233.j
cseg01:460A 33 C0	      xor     ax, ax
cseg01:460C 50		      push    ax
cseg01:460D B8 5E 2B	      mov     ax, 2B5Eh
cseg01:4610 1E		      push    ds
cseg01:4611 50		      push    ax
cseg01:4612 B8 56 2B	      mov     ax, 2B56h 
                                    ; BINGO. Mensaje de Error.
cseg01:4615 1E		      push    ds
cseg01:4616 50		      push    ax
cseg01:4617 B8 40 00	      mov     ax, 40h ;	'@'
cseg01:461A 50		      push    ax
cseg01:461B 9A 00 00 2B	29    call    MESSAGEBOX
/********************************************************/
Este trozo de código es llamado por:
cseg01:45DC C6 86 F8 FE	0A    mov     [bp+var_108], 0Ah
 				    ; Contamos a partir de 10
cseg01:45E1 8B 46 0A	      mov     ax, [bp+arg_4]
cseg01:45E4 8B 56 0C	      mov     dx, [bp+arg_6]
cseg01:45E7 89 86 02 FF	      mov     word ptr [bp+var_FE], ax
cseg01:45EB 89 96 04 FF	      mov     word ptr [bp+var_FE+2], dx
cseg01:45EF		    
cseg01:45EF	     loc_0_45EF:     ; CODE XREF: sub_0_43D2+42E.j
cseg01:45EF 8B C2	      mov     ax, dx
cseg01:45F1 0B 86 02 FF	      or      ax, word ptr [bp+var_FE]
cseg01:45F5 74 29	      jz      loc_0_4620
cseg01:45F7 F6 46 12 02	      test    [bp+arg_C], 2
cseg01:45FB 75 03	      jnz     loc_0_4600
cseg01:45FD E9 C2 00	      jmp     loc_0_46C2
cseg01:4600	;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
cseg01:4600		      
cseg01:4600	      loc_0_4600:    ; CODE XREF: sub_0_43D2+229.j
cseg01:4600 80 BE F8 FE	23    cmp     [bp+var_108], 23h	
 				    ; '#'; LLAMADA AL MENSAJE DE ERROR
cseg01:4605 7D 03	      jge     loc_0_460A
cseg01:4607 E9 B8 00	      jmp     loc_0_46C2
/***********************************************/
MADRE DE MITRA, que astucia tienen estos programadores.
En vez de contar a partir de uno, cuentan a partir de 10 (por eso la comprobacion en cseg01:4600 con 23h=35).
Asi despistaremos a esos estúpidos crackers que nuncan se imaginaran un truco tan orgásmico.
Como podeis ver, to el meollo lo lleva la variable [bp+var_108].
Asi pues sigamos buscando [bp+var_108] y encontramos:
cseg01:47F0 26 8B 57 6A	      mov     dx, es:[bx+6Ah]
cseg01:47F4 89 86 02 FF	      mov     word ptr [bp+var_FE], ax
cseg01:47F8 89 96 04 FF	      mov     word ptr [bp+var_FE+2], dx
cseg01:47FC FE 86 F8 FE	      inc     [bp+var_108]
				    ; !!AQUI!!. aumentamos la cuenta.
cseg01:4800 E9 EC FD	      jmp     loc_0_45EF
cseg01:4803     ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

/************************************************/
El crack es sencillo nopeemos:
cseg01:47FC FE 86 F8 FE  inc     [bp+var_108]; !!AQUI!!
por
cseg01:47FC 90 90 90 90  NOP NOP NOP NOP
En el ejecutable 53fc)h=90 90 90 90
Y listo, nunca mas se incrementará la variable.

Quitemos ahora los horribles mensajes shareware, siguiendo la misma técnica.
Localizemos 3399 y obtenemos:

seg01:B236 9A 28 00 2B	29    call    GETDLGITEM
cseg01:B23B 50		      push    ax
cseg01:B23C B8 99 33	      mov     ax, 3399h
cseg01:B23F 1E		      push    ds
cseg01:B240 50		      push    ax
Este trozo es llamado por:
cseg01:B203 A1 20 47    ;ABOUTDLG+1F6.j
cseg01:B203		      mov     ax, word_14AA_4720
cseg01:B206 48		      dec     ax
cseg01:B207 74 0F	      jz      loc_0_B218
cseg01:B209 48		      dec     ax
cseg01:B20A 74 6A	      jz      loc_0_B276
cseg01:B20C 48		      dec     ax
cseg01:B20D 74 79	      jz      loc_0_B288
cseg01:B20F 48		      dec     ax
cseg01:B210 75 03	      jnz     loc_0_B215
cseg01:B212 E9 85 00	      jmp     loc_0_B29A
asi pues quien parte el bacalao es: word_14AA_4720
Pero analizando un poco con el Sice vemos que este es un bucle de llamadas a mensajes, así que es mejor no tocarlo.
Por tanto, desactivemos la llamada al nag de inicio. Para ello abrimos el Sice y ponemos bpx dialogboxparam y lanzamos el ejecutable.
Boom, aparecemos en el Sice, pulsamos F12 (pulsamos OK) y de nuevo F12.
Aparecemos en:
cseg01:0901 B8 01 00	      mov     ax, 1
cseg01:0904 50		      push    ax
cseg01:0905 0E		      push    cs
cseg01:0906 E8 A7 A6	      call    near ptr sub_0_AFB0
cseg01:0909 83 C4 02	      add     sp, 2
cseg01:090C B8 D5 51	      mov     ax, 51D5h  
Este trozo no es llamado de forma condicional por nadie, está incrustado el la rutina principal, así que nada mejor que desactivarla, cambiándola por:
cseg01:0901 EB 09             jmp 90C  
cseg01:0903 90                NOP
cseg01:0904 50		      push    ax
cseg01:0905 0E		      push    cs
cseg01:0906 E8 A7 A6	      call    near ptr sub_0_AFB0
cseg01:0909 83 C4 02	      add     sp, 2
cseg01:090C B8 D5 51	      mov     ax, 51D5h  
Asi pues En el ejecutable: 1501)h=EB 09 90

Y Listo. Que lo disfruteis.

Saludos Mr Pink.
Siempre a las órdenes de Estado+Porcino.