Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: kenrhad en 6 Junio 2008, 17:39 pm



Título: Ayuda con crack
Publicado por: kenrhad en 6 Junio 2008, 17:39 pm
Bueno este es mi primer post para pedir ayuda de crack.

despues de leer el taller de crack por karmany e intentado reguistrarme con un programa,
lo que hice fue lo siguiente, dado que e usado el wdasm, me encuentro con un problema el cual es el siguiente.

busco el mensage que me da el programa al poner mal el serial y entonces me encuentro con que el mensaje sale de tres lugares diferentes.

e puesto en ellos jmp y saltan, pero no pasa nada sigue sin funcionar, me e leido de donde salen cada uno y a donde van, pero nada, al parecer aun no estoy listo para esto, y yo que pense que ese seria un programa sencillo de crackear.

aqui les dejo una imagen de donde muestra las direcciones de donde proviene el mensaje (http://img393.imageshack.us/img393/9318/92607681id1.th.png)


Título: Re: Ayuda con crack
Publicado por: tena en 7 Junio 2008, 05:36 am
Hola kenrhad, por lo que lei al mensaje malo llegas de tres diferentes lugares o saltos, y si los cambias por un JMP siempre te va a ir a parar al mensaje malo...

Fijate que compara antes del salto....

tena


Título: Re: Ayuda con crack
Publicado por: kenrhad en 12 Junio 2008, 13:59 pm
Hola kenrhad, por lo que lei al mensaje malo llegas de tres diferentes lugares o saltos, y si los cambias por un JMP siempre te va a ir a parar al mensaje malo...

Fijate que compara antes del salto....

tena
Bueno, e buscado si hay algun mensaje de chico bueno (el mensaje contrario a que el pass es incorrecto) en el programa y no encuentro, hasta ahora e avansado un poco con olly y pude lograr que no caduque por tiempo, pero no estoy satisfecho con eso, quiero descubrir el algoritmo para despues crear un keygen, si es que puedo.

Gracias por tu respuesta



Título: Re: Ayuda con crack
Publicado por: KJD en 12 Junio 2008, 15:23 pm
podrias poner el nombre del programa o el link de descarga, asi podemos ayudarte un poco mas......


Título: Re: Ayuda con crack
Publicado por: kenrhad en 13 Junio 2008, 14:30 pm
podrias poner el nombre del programa o el link de descarga, asi podemos ayudarte un poco mas......

Este es el programa, que por cierto me tiene loco con tantas vueltas que da por los mismos sitios.

otra cosa tenia el w32mas de prueva y despues que termino el limite de uso instale la version full y de todas maneras sigue bloqueado, que tengo que hacer?

http://sarcoma-igor.chat.ru/rubik.zip


Título: Re: Ayuda con crack
Publicado por: KJD en 13 Junio 2008, 14:56 pm
ok ahora lo descargo y e fijo que podemos hacer.


Título: Re: Ayuda con crack
Publicado por: kenrhad en 13 Junio 2008, 15:12 pm
Bueno si quieres pongo los bp que puse para ir paso a paso, pero es que el programa hace lo que creo se llama loop mil veces, los registros vuelven a su valor principal, tambien veo que forma una cadena assi:
eax = 00a6ce8c ascii = E87110E8

En principio la forma con E871
pero no se de donde viene porque son muchas veces que hace loop y asi que lo adelando con f9 hasta llegar al error, el user que tecleo es kenrhad.

estos son los brek point
bp=00488345
bp=0048839f


Título: Re: Ayuda con crack
Publicado por: KJD en 13 Junio 2008, 19:34 pm
Bueno estuve con el programa, si bien parece sencillo el registro no lo es tanto, he encontrado la rutina donde genera una especie de primer serial o primera parte del serial, esta se genera en

00488345  |.  E8 36EEF7FF   CALL <JMP.&kernel32.GetTickCount>        ; [GetTickCount

despues en 00488398  |.  E8 A3BBF7FF   CALL Rubik.00403F40 testea el numero ingresado con este numero si no es igual salta al mensaje de error, si es igual sique con 0048839F  |.  E8 DCEDF7FF   CALL <JMP.&kernel32.GetTickCount>        ; [GetTickCount ahi abria que ver que es lo que hace ya que si dejas solamente este numero generado como serial, te dice que no es valido... les dejo la imagen para que vea mejor.

http://img113.imageshack.us/img113/2355/33625278nj2.jpg (http://img113.imageshack.us/img113/2355/33625278nj2.jpg)



Título: Re: Ayuda con crack
Publicado por: kenrhad en 14 Junio 2008, 13:59 pm
Por lo que veo tu tambien te encontraste con la secuencia esa, que en mi maquina y con mi user es:

eax=00a53d48 asii= E87110E8
adx=00ae99b8 assi= kenrhad

yo tambien prove el assi de eax pero me dio error, aunque lo veo que lo compara
cuando lo ingreso va derechito para el mensaje malo.

viendo tu cadena assi se me ocurre que la compraracion ya no es tan compleja dado que comiensan con E8 la supongo que tipeaste kjd.

Otra cosa cuando estaba buscando, me fije que el usa la primera y la ultima letra para agregarle valores y compararlas despues, pero es un poco difilil de ver ya que tiene uno que estar dando f7 0 f8 para verlo y tambien menzcla el nonbre con otras string. un una ocacion formo userhad.

aver que le sacamos a este programita, el cual pense que era facil de crackear.
 :laugh: pero veo que no :( almenos para mi.

voy a modificar los reguistros a ver que pasa en el ultimo mensaje


Título: Re: Ayuda con crack
Publicado por: kenrhad en 14 Junio 2008, 15:49 pm
Bueno estuve con el programa, si bien parece sencillo el registro no lo es tanto, he encontrado la rutina donde genera una especie de primer serial o primera parte del serial, esta se genera en

00488345  |.  E8 36EEF7FF   CALL <JMP.&kernel32.GetTickCount>        ; [GetTickCount

despues en 00488398  |.  E8 A3BBF7FF   CALL Rubik.00403F40 testea el numero ingresado con este numero si no es igual salta al mensaje de error, si es igual sique con 0048839F  |.  E8 DCEDF7FF   CALL <JMP.&kernel32.GetTickCount>        ; [GetTickCount ahi abria que ver que es lo que hace ya que si dejas solamente este numero generado como serial, te dice que no es valido... les dejo la imagen para que vea mejor.

http://img113.imageshack.us/img113/2355/33625278nj2.jpg (http://img113.imageshack.us/img113/2355/33625278nj2.jpg)



bueno ahora me doy cuenta de que en 004883e4 loq eu hace es mandarte de hasta el mensaje malo que esta mas abajo, pero si pones z y p en cero te manda a 00403f40


Título: Re: Ayuda con crack
Publicado por: KJD en 14 Junio 2008, 18:27 pm
Exactamente eso era lo que te decia , si no pones el ascii de eax, directamente te manda al mensaje malo en cambio si lo pones hace otra comprobacion en 004883C5 , hay que analizar ahi que es lo que hace con la cadena introducida, o si simplemente no ahce nada.....

PD: Por no estar protegido este programa es bastante dificil de sacar un serial valido, almenos para mi....



 


Título: Re: Ayuda con crack
Publicado por: kenrhad en 16 Junio 2008, 14:57 pm
Al parecer no le importa a muchos este post


Título: Re: Ayuda con crack
Publicado por: Shaddy en 16 Junio 2008, 21:43 pm
GetTickCount simplemente te da el tiempo trascurrido desde que se inició windows, y se utiliza para generar valores aleatorios, como muchas API... Así que dudo que esa tenga que ver mucho en un número de serie.

Salu2..


Título: Re: Ayuda con crack
Publicado por: Shaddy en 16 Junio 2008, 21:53 pm
Bueno como vi que dijiste que no te hacían caso, lo miré por encima, no os centréis siempre en la verificación de User & Pass, cualquier tipo de limitación es condicionada... prueba dejando esto así:

00455A20      C646 26 01    mov byte ptr ds:[esi+26],1

con ese byte registras el programa.

Salu2..


Título: Re: Ayuda con crack
Publicado por: Mintaka en 17 Junio 2008, 00:10 am
Al parecer no le importa a muchos este post

Hola.
No suelo meterme en los post que ya han contestado otros kolegas, pero en esta ocasion me ha picado la curiosidad.
Aparte de hacer lo que te ha dicho Shadow si quieres que te quede wapo el menu Help añades estos dos cambios más:

00455A75      807B 26 01    CMP BYTE PTR DS:[EBX+26],1
0049765C      8078 26 01    CMP BYTE PTR DS:[EAX+26],1

Lo del serial y el keygen lo dejo para otros.
Saludos,

Mintaka


Título: Re: Ayuda con crack
Publicado por: Shaddy en 17 Junio 2008, 01:15 am
joer, pero si es el byte ese XD, pro no se porque lo pone a 0 xD, mañana lo miro, pro amos, los cambios esos son pa lo mismo al fin y al cabo :).

Salu2..


Título: Re: Ayuda con crack
Publicado por: kenrhad en 17 Junio 2008, 05:35 am
Hola.
No suelo meterme en los post que ya han contestado otros kolegas, pero en esta ocasion me ha picado la curiosidad.
Aparte de hacer lo que te ha dicho Shadow si quieres que te quede wapo el menu Help añades estos dos cambios más:

00455A75      807B 26 01    CMP BYTE PTR DS:[EBX+26],1
0049765C      8078 26 01    CMP BYTE PTR DS:[EAX+26],1

Lo del serial y el keygen lo dejo para otros.
Saludos,

Mintaka

Bueno como vi que dijiste que no te hacían caso, lo miré por encima, no os centréis siempre en la verificación de User & Pass, cualquier tipo de limitación es condicionada... prueba dejando esto así:

00455A20      C646 26 01    mov byte ptr ds:[esi+26],1

con ese byte registras el programa.

Salu2..

Perdon por no saberme expresar, pero en verdad no queria que me crackearan el programa, solo queria que me orientaran sobre como buscar y eso, dado que ustedes ya crackearon el programa pero yo por ejemplo estoy en blanco, no se como buscar, ni como llegaron a esa cadena o direccion.

Espero me ayan entendido esta ves.
Gracias por todas sus respuestas


Título: Re: Ayuda con crack
Publicado por: Shaddy en 17 Junio 2008, 09:32 am
Es fácil, si te das cuenta el mismo dialogo que te pide el password se encuentra aquí:

00455A93  |.  FF53 28       call ds:[ebx+28]

¿como lo encontramos?, pues yo por ejemplo cuando aparece, paro el flujo directamente (F12), y luego voy retornando hasta ver el bucle de la ventana (en este caso por ser delphi es fácilmente reconocible).

Citar
004487E1  |> /8B03          /mov eax,ds:[ebx]
004487E3  |. |E8 D42D0000   |call Rubik.0044B5BC
004487E8  |. |8B03          |mov eax,ds:[ebx]
004487EA  |. |80B8 8C000000>|cmp byte ptr ds:[eax+8C],0
004487F1  |. |74 0F         |je short Rubik.00448802
004487F3  |. |8B45 FC       |mov eax,[local.1]
004487F6  |. |C780 34020000>|mov dword ptr ds:[eax+234],2
00448800  |. |EB 14         |jmp short Rubik.00448816
00448802  |> |8B45 FC       |mov eax,[local.1]
00448805  |. |83B8 34020000>|cmp dword ptr ds:[eax+234],0
0044880C  |. |74 08         |je short Rubik.00448816
0044880E  |. |8B45 FC       |mov eax,[local.1]
00448811  |. |E8 26FDFFFF   |call Rubik.0044853C
00448816  |> |8B45 FC       |mov eax,[local.1]
00448819  |. |8B80 34020000 |mov eax,ds:[eax+234]
0044881F  |. |85C0          |test eax,eax
00448821  |.^\74 BE         \je short Rubik.004487E1

entonces metes un BP justo debajo del JE y parará cuando termines con la ventana.. de ésta manera irás retornando hasta llegar justo debajo del CALL que te dije.

Entonces si te fijas ves que hay varias comparaciones:

Citar
00455A69  |.  807B 30 00    cmp byte ptr ds:[ebx+30],0
00455A6D  |.  74 43         je short Rubik.00455AB2
00455A6F  |.  F643 20 10    test byte ptr ds:[ebx+20],10
00455A73  |.  75 21         jnz short Rubik.00455A96
00455A75      807B 26 00    cmp byte ptr ds:[ebx+26],0
00455A79  |.  75 1B         jnz short Rubik.00455A96
00455A7B  |.  66:837B 2A 00 cmp word ptr ds:[ebx+2A],0
00455A80  |.  74 14         je short Rubik.00455A96

tomando como referencia ésta:

00455A75      807B 26 00    cmp byte ptr ds:[ebx+26],0

pones un BP ahi reinicias y verás que compara un solo byte de una direccion. Que si le metes un HBP on access al inicio te darás cuenta que hay una línea que mueve un 00 al principio y le pones un 1 y queda registrado..

otra manera de llegar sería:

Citar
0049765C      8078 26 00    cmp byte ptr ds:[eax+26],0
00497660  |.  75 5F         jnz short Rubik.004976C1
00497662  |.  8D55 E8       lea edx,[local.6]
00497665  |.  A1 F4C04900   mov eax,ds:[49C0F4]
0049766A  |.  E8 915DF9FF   call Rubik.0042D400
0049766F  |.  8D45 E8       lea eax,[local.6]
00497672  |.  BA E8784900   mov edx,Rubik.004978E8                   ;  ASCII "  *UNREGISTERED*"

ahi se hace la misma comparacion.


Salu2..





Título: Re: Ayuda con crack
Publicado por: Mintaka en 17 Junio 2008, 09:51 am
joer, pero si es el byte ese XD, pro no se porque lo pone a 0 xD, mañana lo miro, pro amos, los cambios esos son pa lo mismo al fin y al cabo :).

Salu2..

Lo pone otra vez a cero porque, el muy gay, coge el primer byte del fichero WINSPOOL.CRC y se lo mete en la variable aquí:

0012FA90   00409001  /CALL to ReadFile from Rubik.00408FFC
0012FA94   00000064  |hFile = 00000064 (window)
0012FA98   00AB434A  |Buffer = 00AB434A
0012FA9C   00000001  |BytesToRead = 1
0012FAA0   0012FAA8  |pBytesRead = 0012FAA8
0012FAA4   00000000  \pOverlapped = NULL

Handles, item 7
 Handle=00000064
 Type=File
 Name=\Device\HarddiskVolume2\WINDOWS\SYSTEM32\WINSPOOL.CRC

Saludos,

Mintaka


Título: Re: Ayuda con crack
Publicado por: Mintaka en 17 Junio 2008, 12:44 pm

Perdon por no saberme expresar, pero en verdad no queria que me crackearan el programa, solo queria que me orientaran sobre como buscar y eso, dado que ustedes ya crackearon el programa pero yo por ejemplo estoy en blanco, no se como buscar, ni como llegaron a esa cadena o direccion.

Espero me ayan entendido esta ves.
Gracias por todas sus respuestas


A ver una cosita.No se si te habrá quedado clara la explicación que te acaba de dar Shadow de cómo encontró el lugar idóneo para simular estar registrado.Si es que sí esta explicación más extendida de lo que hice yo, igual te sobra...o no.
Tú deberías saber que esto del cracking es como el cuento del gato y el ratón.El programador intenta esconder el punto débil de su protección.Hace ya un tiempo que están aprendiendo a despistarnos.Cada vez vemos menos direcciones de memoria fijas, claramente visualizadas en el desensamblado y por eso usan el direccionar posiciones de memoria "calientes" de manera indirecta, con lo cual aparecen relacionadas con registros más un desplazamiento.
Debemos acostumbrarnos a esta "nueva" situación.
La zona que más "canta" es en la que se ve claramente como nos proclama *UNREGISTERED*, aqui:

00497672  mov edx,Rubik.004978E8 ; ASCII " *UNREGISTERED*"

Si nos lo pone es porque sabe que no estamos registrados.¿Y cómo lo sabe?.Pues muy fácil.Lo descubre un poco mas arriba en el código, aqui:

0049765C cmp byte ptr ds:[eax+26],0
00497660 jnz short Rubik.004976C1

Si es diferente de cero, el valor que hay dentro de [eax+26], es que estamos registrados y no nos saldrá el *UNREGISTERED* en la barra del título, porque saltará a 004976C1.
¿Y que hay dentro de [eax+26]?.Pues en este caso hay escrita esta dirección de memoria 00AB434A.El valor que contiene esa dirección es lo único que tenemos que vigilar, que en principio, como te dijo Shadow, lo pone a cero.Nosotros debemos hacer lo imposible para que valga siempre 1, porque consulta lo que hay dentro de esa dirección en varios lugares del código (disfrazada con otros nombres de registro) y en este caso nos la cambia en un momento determinado.
Lógicamente has de saber usar el Olly u otro debugger, con cierta soltura.
Que te sirva de consuelo que todos hemos empezado como tú; es decir, haciendo preguntas después de estrellarnos una y otra vez.
Sigue preguntando, que no nos molestas para nada.
Saludos,

Mintaka


Título: Re: Ayuda con crack
Publicado por: KJD en 17 Junio 2008, 14:20 pm
Gracias Mintaka y ShadowDark, me alegra saber que hay gente con ganas de enseñar y explicar, y como nos habren el coco buscando otras formas de encarar cada programa. Se agradece.


Título: Re: Ayuda con crack
Publicado por: kenrhad en 17 Junio 2008, 15:07 pm
Muchas gracias por sus respuestas. creo que me a que dado claro haber si busco otro programita para ver que hago, en un principio mi objetivo es encontrar un user y pass validos, y de no poder hacrlo entonces parchearlo.

Creo que deberia tratar de buscar un user y pass y no parchearlo a la primera, si estoy en error me corrigen porfavor.

Nueva mente gracias por su explicacion a ShadowDark y Mintaka.

Gracias a KJD por tratar de ayudarme


Título: Re: Ayuda con crack
Publicado por: tena en 17 Junio 2008, 21:41 pm
En mi caso yo le dedico poco tiempo a la busqueda del serial, sino aparece enseguida, le empiezo a atakar por otros lados hasta encontrar el byte magico..

Si tiene una nag que no deberia aparecer en un programa registrado, pues hago como Shady, lo pongo en pausa y voy retrocediendo para atras...

O en los menues que te aparece la opcion de Registrar, y que en un programa registrado no te deberia dar esa opcion, pues busco el id del item, y trato de encontrar donde lo elimina o desactiva.

todo depende, si uno quiere buscar el serial y aveces encontrarse con rutinas muy complejas y perder tiempo en buscar ese serial jeje ó ir al grano y buscar ese byte magico...   Al final el objetivo es el mismo: Registrar el programa..

Saludos
tena


Título: Re: Ayuda con crack
Publicado por: apuromafo CLS en 4 Julio 2008, 05:23 am
yo tengo 5 minutos max para revisar un prog
en los 3 los crackeo y en los otros 2 busco si ya existe cracked
asi no hago trabajo inutil (desempacar algo) que tiene hasta keygen y los updates (en las versiones demo)
y si tarda mas, pues a 2 partes, como a pendiente o como a la papelera de reciclaje