Karpoff Spanish Tutor

Cracking desde cero para súper newbies 7

Un repaso con el SiCE

 

 

 INTRODUCCION

       hola amigos!!!, como les va a todos?, espero que bien. por los mails que estoy recibiendo, veo que este curso les gusta, por lo que seguiré escribiéndolo.  en este tutorial crackearemos varios programas y dentro de lo posible, les daré otros programas que se crackean de la misma forma (igual o con pequeñas variaciones) para ir practicando. de ahora en más, nos saltearemos explicaciones básicas ya que vamos por el séptimo capítulo!!!, tienen que saber lo básico de lo estudiado!!!. iremos tomando un ritmo más rápido y ágil así pienso que las cosas mejorarán. bueno vamos a crackear!!!

 

 al atake

víctima 1: 

los detalles de nuestra primera vïctima:

víctima:
password keeper v5.7
url:
descripción:
para organizar tus claves
tipo de protección:
serial y una nag horripilante al iniciar.
objetivo
obtener un número de registro válido.
herramientas 
softice 3+, papel y lápiz.

        a este programa, le doy 5 puntos sobre 10. fue de mi agrado aunque no es gran cosa, les servirá a los que no tienen buena memoria ya que solo tendrán que memorizar una clave, la de acceso a la base de datos donde estarán todas las otras claves que ustedes quieran. no tuve tiempo de probarlo mucho pero algo he visto. su protección da lástima, ya verán que con un leve esfuerzo podremos sacar un serial válido y registrar el programa.

        ejecutémoslo y nos escupe una nag por un tiempo que parecería más de lo que ese programa de tan pequeño tamaño puede demorar en cargar. de hecho es así, ya que esta nag no aparece en la versión registrada. pues ¿quieren que aparezca esta nag?, yo no así que vamos a registrar el programa. help/register y nos aparecerá esta ventana:

        estos son los datos que introducí así que el programa calculará mi serial a través de mi name y la organización que haya escrito. ponemos siguiente y como era de esperar nos aparece la ventana de "su número de serie es incorrecto, bla bla bla bla, póngase en contacto con mis creadores y pague por mi ya!!!". al diablo!!!.[ctrl+d] y al sice.  ¿cual break point ponemos?. pongamos 3. bpx messageboxa, bpx getdlgitemtexta, bpx getwindowtexta. a ver cual pica. probemos. ponemos ok y salta al sice, picó getdlgitemtexta. recuerdan que el mensaje de error era llamado (en este caso) por 2 razones. 1 el nombre y 2 la organización. como a nosotros nos interesa el serial le damos a f5 2 veces para no seguirle la pista al nombre ni a la organización. apareceremos en la user32.dll ya que aquí está la función. no nos importa meternos en las dlls por lo que presionamos f12 o f11 una vez para ir al lugar del código dentro del ejecutable del programa donde se hizo la llamada a getdlgitemtexta. luego vamos traceando con f10 y pasaremos por varios lugares interesantes. f10 más o menos 20 veces y apareceremos en este lugar:

:00412847 ffd3                 call ebx
:00412849 eb07                 jmp 00412852
:0041284b 3d3cce5f0d           cmp eax, 0d5fce3c
:00412850 750c                 jnz 0041285e
:00412852 57                   push edi
:00412853 56                   push esi
:00412854 e827530000           call 00417b80
:00412859 83c408               add esp, 00000008
:0041285c 8bd8                 mov ebx, eax
:0041285e 57                   push edi
:0041285f 56                   push esi
:00412860 e81b530000           call 00417b80
<--------------llama a la rutina de comprobación
:00412865 83c408               add esp, 00000008
:00412868 3bd8                 cmp ebx, eax<-con los f10 más o menos 20 veces nos paramos aquí. 
:0041286a 5f                   pop edi
:0041286b 741d                 jz 0041288a
<--------si ebx y eax son iguales nos vamos a 0041288a
:0041286d 68cfea0000           push 0000eacf
:00412872 6888130000           push 00001388
:00412877 55                   push ebp
:00412878 e8b378ffff           call 0040a130
:0041287d 83c40c               add esp, 0000000c
:00412880 5e                   pop esi

        creo que ya está claro lo que haremos. estamos parados sobre la comparación de nuestros dos seriales, el generado por el programa y el que introducimos. ¿y que era lo que teníamos que hacer en estos casos?. d ebx, nada, d eax, nada. ¿pero aquí tendrían que haber aparecido nuestros seriales?. en estos casos usaremos el comando ?. escribimos ?ebx, si, es el serial que introducimos!!!, ?eax, esto tiene pinta de ser el serial correcto. lo anotamos, lo escribimos sin los ceros del principio y..

.

        si!!!, lo logramos!!!. esta misma técnica les servirá para registrar rgb editor for windows 95/nt, battle star v2.8, reminders v3.5, en fin, los 27 programas de software design disponibles en http://www.gregorybraun.com/. así que a practicar!!!. espero que los crackeen toditos. yo he crackeado como 6 ya que me aburrí y los dejé a todos esperando. pero a ustedes seguro que les vendrá bien hacer un pequeño repasito con el sice.

 

víctima 2: 

aquí van los detalles:

víctima:
raindrops
url:

http://www.northstarstudios.com/ 

descripción:
screensaver que simula la caída de lluvia en su escritorio.
tipo de protección:
caduca luego de 10 días de concluida la instalación.
objetivo
obtener un número de registro válido.
herramientas 
softice 3+, papel y lápiz.

        de la existencia de este programa me informó profesor x, gracias a él están leyendo esto que les servirá para ver una parte importante del sice. gracias profe!!!.

        el programa no me gustó mucho pero nos servirá para practicar, como casi todos los programas shareware que hay por internet. vamos a crackearlo.

        vayan a las propiedades de pantalla/protector de pantalla/raindrops y aprieten el botón de configuración. ya se puede ver claramente que podemos introducir nuestro número de serie. para hacerlo hagan clic en el icono de la llave y nos aparecerá esta ventana:

        aquí nos dice todo. este protector de pantalla es shareware y caducará dentro de diez días. pero que podemos pagar 4.99 dólares por él y registrarnos. si les gusta el screen saver, regístrense pero estamos aquí para  crackear. rellenen los datos que les pide. yo lo haré como se muestra en la imagen. apretamos unlock screensaver y como era de esperar "invalid registration data". podríamos poner un break point en messageboxa, getwindowtexta o getdlgitemtexta pero usaremos el break point bueno o sea hmemcpy. yo lo utilizo el 80% de las veces. así que [ctrl+d] entramos al sice. luego ponemos bpx hmemcpy o bpxhmemcpy. es lo mismo ponerlo todo junto que separado por un espacio igual que poner d eax o deax, etc. pusimos el bpx, ahora ponemos aceptar y nos vamos directo al sice. primero f5 para no seguirle la pista al nombre. ahora estamos en la kernell32.dll así que presionamos f12 para ver quien hizo la llamada a hmemcpy. luego de apretar f12 una vez nos pasamos por la user32.dll. para entrar al código dentro del ejecutable del screensaver hay que apretar f12 7 veces en total. luego vamos traceando con f10 más o menos 25 veces. si no se la quieren hacer tan difícil, aprieten f12 5 veces más y luego nos paramos encima de la call con algunos f10. hay varias formas de llegar al mismo objetivo. llegaremos a este punto:

:0048f78c 8b45fc                mov eax, dword ptr [ebp-04]
:0048f78f 50                    push eax
:0048f790 8d55f8                lea edx, dword ptr [ebp-08]
:0048f793 a124234a00            mov eax, dword ptr [004a2324]
:0048f798 8b00                  mov eax, dword ptr [eax]
:0048f79a 8b80d8020000          mov eax, dword ptr [eax+000002d8]
:0048f7a0 e84ffefaff            call 0043f5f4
:0048f7a5 8b45f8                mov eax, dword ptr [ebp-08]
:0048f7a8 5a                    pop edx
:0048f7a9 e8de020000            call 0048fa8c<-------------------llama a la rutina de comprobación
:0048f7ae 84c0                  test al, al<--------------------compara si el flag devuelto es cero
:0048f7b0 0f84ee000000          jz 0048f8a4
<
--------------------si es cero nos vamos a 0048f8a4
:0048f7b6 33c0                  xor eax, eax
:0048f7b8 55                    push ebp
:0048f7b9 6883f84800            push 0048f883

        bien. vemos que hay una call encima de test al, al. como les muestro, test al, al compara si el flag devuelto por la call es cero. los flags son como indicadores que dicen o verdadero(1) o falso(0). aquí compara si el número de serie introducido es falso y de ser así nos vamos al mensaje de error. pero, ¿como se que este es el salto que decide todo?. fácil. en este caso el flag devuelto por la call será cero ya que introducimos un número de registro inválido. lo que podemos hacer es invertir este flag para que sea 1. ¿cómo?. muy fácil, en el sice debes escribir esto r fl z. luego aprieta f5 para salir y verás que aparece la ventanita de "gracias por registrarse". si no quieres, no pruebes ya que tendrás que volver a este punto.

        estábamos en la call que llama a la rutina de comprobación. con la call nos vamos a la dirección 0048fa8c, es en esta dirección donde se realizan las operaciones de cálculo del serial. para continuar la búsqueda de nuestro serial tendremos que entrar en la call. nos paramos encima de ella y apretamos f8. estamos dentro de la call. a tracear!!!. ahora tenemos que ir dándole a f10. apriétenlo más o menos 94 veces (ufff!!!). en el camino pasaremos por varios lugares interesantes como este:

:0048fae3 e858f1feff               call 0047ec40
:0048fae8 a178224a00               mov eax, dword ptr [004a2278]
:0048faed 8b00                     mov eax, dword ptr [eax]
:0048faef 8b4054                   mov eax, dword ptr [eax+54]
:0048faf2 e83943f7ff               call 00403e30
<------------comprobación de la logitud del s/n
:0048faf7 83f807                   cmp eax, 00000007<----ve si nuestro serial tiene 7 caracteres
:0048fafa 7e2f                     jle 0048fb2b<------------------si es menor nos vamos al error
:0048fafc a178224a00               mov eax, dword ptr [004a2278]
:0048fb01 8b00                     mov eax, dword ptr [eax]

        estas líneas de código nos van dando pistas sobre como tendrá que ser el serial. ya sabemos que tiene que tener 7 caracteres. si es menor nos vamos al mensaje de error. pero después de apretar f10 las 94 veces apareceremos aquí:

:0048fb98 33d2                     xor edx, edx
:0048fb9a 52                       push edx
:0048fb9b 50                       push eax
:0048fb9c 8d55e4                   lea edx, dword ptr [ebp-1c]
:0048fb9f b820000000               mov eax, 00000020
:0048fba4 e89b8bf7ff               call 00408744
:0048fba9 8b55e4                   mov edx, dword ptr [ebp-1c]
<------------interesante
:0048fbac 8b45f8                   mov eax, dword ptr [ebp-08]
<------------interesante
:0048fbaf e88c43f7ff               call 00403f40<--------------------------------nos paramos aquí
:0048fbb4 7504                     jnz 0048fbba
:0048fbb6 b301                     mov bl, 01
:0048fbb8 eb02                     jmp 0048fbbc
:0048fbbc 33c0                     xor eax, eax
:0048fbbe 5a                       pop edx
:0048fbbf 59                       pop ecx
:0048fbc0 59                       pop ecx
:0048fbc1 648910                   mov dword ptr fs:[eax], edx
:0048fbc4 eb0c                     jmp 0048fbd2

        de todas las zonas interesantes por las que pasamos. y en las zonas interesantes siempre veíamos el valor de los registros. d eax, si!!!, es el serial que introducimos!!!. d ebx, nada.d ecx, nada. d edx, esto tiene pinta de serial, tiene 7 caracteres. probemos, lo escribimos todo en mayúsculas y...

        lo logramos!!!!. muy bien. con esta misma técnica podrán crackear los 4 screensavers disponibles aquí. esto les servirá para practicar y para entretenerse un poquito :-). espero que los crackeen todos. estos si los he crackeado toditos ya que solo son 4. de ser más me hubiera aburrido.

 

víctima 3: 

aquí van los detalles:

víctima:
a smaller image 1.0
url:
descripción:
para reducir en tamaño de las imágenes!!!!
tipo de protección:
serial, y nag al empezar.
objetivo
obtener un número de registro válido.
herramientas 
softice 3+, papel y lápiz.

        ahh byte mio!!!, otro programa estúpido. para reducir el tamaño de las imágenes!. a quien se le pudo ocurrir programar esto!. por que casi todos los programas que crackeamos tienen que ser horribles!, nada bien hacen los programadores?. espero que mejoren para un futuro muy cercano.

ejecutamos el programa (por si no saben, el ejecutable está en el directorio c:\dondelohayasinstalado\bin\asmallerimage.exe) y nos escupe una horripilante ventana "reclamando" por nuestro número de serie. yo la llenaré así:

register y banggg, 

        yo casi siempre cuando busco seriales uso hmemcpy. siempre pica y los seriales por lo menos yo los encuentro más rápido. [ctrl+d] entramos al sice, bpx hmemcpy, f5. luego le pegamos a register y nos vamos directo al sice. f5 para no seguirle la pista al nombre. estamos en las dll y esto no nos interesa por lo que presionamos f12  más o menos para ir al lugar donde se hizo la llamada dentro del ejecutable del programa. llegaremos a este punto:

:004265f5 51                     push ecx
:004265f6 50                     push eax
:004265f7 8b4d10                 mov ecx, dword ptr [ebp+10]
:004265fa e881d2ffff             call 00423880
:004265ff 50                     push eax
:00426600 56                     push esi
:00426601 ff1550ca4300           call[user32!getwindowtexta]<-------------interesante no?
:00426607 6aff                   push ffffffff<-----------------------------------aquí aparecemos
:00426609 8b4d10                 mov ecx, dword ptr [ebp+10]
:0042660c e847d2ffff             call 00423858
:00426611 eb0b                   jmp 0042661e
:00426613 8b4510                 mov eax, dword ptr [ebp+10]
:00426616 ff30                   push dword ptr [eax]
:00426618 56                     push esi
:00426619 e853fcffff             call 00426271
:0042661e 5f                     pop edi
:0042661f 5e                     pop esi
:00426620 5d                     pop ebp
:00426621 c20c00                 ret 000c
<--------------------------------------------retorno
:00426624 55                     push ebp
:00426625 8bec                   mov ebp, esp
:00426627 56                     push esi

        como siempre, llegamos a este punto y tenemos que tracear con f10. más o menos apriétenlo 62 veces. siempre busquen saltos tipo jz o jnz que puedan ser interesantes. llegarán a este punto:

:004013d4 e8d7980000             call 0040acb0<-----------------llama a la rutina de comprobación
:004013d9 83c404                 add esp, 00000004
<---------hace una serie de operaciones para
:004013dc b860494300             mov eax, 00434960      
culminar con el cálculo del serial
:004013e1 8b555c                 mov edx, dword ptr [ebp+5c]
:004013e4 8a08                   mov cl, byte ptr [eax]
:004013e6 3a0a                   cmp cl, byte ptr [edx]
:004013e8 751a                   jnz 00401404<------------------muestra o no el mensaje de error?
:004013ea 0ac9                   or cl, cl
:004013ec 7412                   jz 00401400
:004013ee 8a4801                 mov cl, byte ptr [eax+01]
:004013f1 3a4a01                 cmp cl, byte ptr [edx+01]
:004013f4 750e                   jnz 00401404
:004013f6 83c002                 add eax, 00000002
:004013f9 83c202                 add edx, 00000002

        esta parece una zona interesante. vamos a rastrear el contenido de los registros. d eax, este es un número raro, lo anotamos y lo escribimos (el cero del principio también)...

        con esta técnica podrán registrar casi todos los programas disponibles en http://www.trivista.com/. hay algunos que no serán así de fáciles pero que creo que podrán. así que a practicar!!!.

 

víctima 4: 

aquí van los detalles:

víctima:
dirc v2.2.0.1
url:
descripción:
programa de chat parecido al mirc.
tipo de protección:
caduca a los 30 días y serial
objetivo
obtener un número de registro válido.
herramientas 
softice 3+, papel y lápiz.

por fin un programa bueno que crackear!!!. después de tanta desilusión, nos encontramos con algo realmente bueno. prueben este programa, le doy 7.5 puntos sobre 10. ahora vamos a ver cuantos puntos le damos a su protección!!!.

lo ejecutamos, vamos al menú help/purchase... y aparecerá una ventana. yo llenaré los datos como se muestra en la imagen:

pulsamos ok y no pasa nada!, se cierra la ventana!. podríamos pensar que los programadores sabían lo que hacían cuando hicieron esta protección, pero como siempre, las apariencias engañan. [ctrl+d] entramos al sice, bpx hmemcpy, f5 para salir del sice, pulsamos ok y directo al sice!!. recuerden que primero siempre oprimimos f5 2 veces para no seguirle la pista al name ni a la company. estamos en la kernell32.dll, esta zona no nos interesa así que presionamos f12 más o menos 8 veces hasta que veamos que estamos dentro del ejecutable del programa. ahora a tracear!!!. démosle a f10 más o menos 56 veces. no se preocupen por si en algunos momentos salimos del sice ya que aparecerá instantáneamente. después de darle 56 veces a f10 apareceremos aquí:

:0047d0cb 50                    push eax
:0047d0cc ffd3                  call ebx
:0047d0ce 83c410                add esp, 00000010
:0047d0d1 8d4c2410              lea ecx, dword ptr [esp+10]
:0047d0d5 85c0                  test eax, eax
:0047d0d7 0f94c3                sete bl
:0047d0da e839bf0200            call 004a9018
<----------------llama a la rutina de comprobación
:0047d0df 84db                  test bl, bl
<-------------------compara si el flag devuelto es cero
:0047d0e1 0f8451010000          jz 0047d238<---------------------------de ser así, chico malo.
:0047d0e7 8d4c2418              lea ecx, dword ptr [esp+18]
:0047d0eb e8cabf0200            call 004a90ba
:0047d0f0 6a00                  push 00000000
:0047d0f2 6801100000            push 00001001
:0047d0f7 6828b24e00            push 004eb228
:0047d0fc 8d4c2424              lea ecx, dword ptr [esp+24]
:0047d100 c744244000000000      mov [esp+40], 00000000

como en la víctima 2, puedes invertir el flag devuelto por la call escribiendo r fl z y aparecerá la ventana de gracias por registrarse. pero vamos a averiguar nuestro número de serie. d eax, nada. d ebx, nada. d ecx, nada. d edx, este es un número bastante rarito no?. lo anotamos, lo escribimos y...

genial!!! si no encontraron el número y tienen que hacer todo de nuevo les doy una pista, el mío empieza por 63595-6796-34... aquí me mataron, no encontré ningún programa que se crackee así. pero bueno, busquen ustedes, ya tienen mucha tarea que hacer.

 

despedida: 

aquí culmina el manual con más ejercicios prácticos que he hecho. gracias a profesor x por toda su ayuda, a karpoff por su gran trabajo en su page y por su apoyo, a k-for por supuesto, mr.mauve, por darme una cálida bienvenida en el canal de wkt y por su ayuda en algunas áreas, crkviz por hacerme pasar tan buenos ratos con las joditas que te hago, y a ustedes que leen mis manuales. saludos a todos y, 

 

a s t a l a v i s t a


página oficial del grupo k-for: http://pagina.de/kfor
mi dirección de e-mail: dek_oin@hotmail.com

 

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