Crackear programas con proteccion

Iniciado por nutriax, 23 Marzo 2009, 15:44 PM

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

KJD

Con respecto a la pila, pudes hacer click derecgo, follow in dump y provar si puedes poner braeakpoint ahi.

Me baje el programa, no me aguante jejej, y le es toy echando un vistazo.....
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

nutriax

jajajajaj viste que atrapante este mundo!!!!  ;D ;D ;D bueno vos lo sabes mas que yo!!!!  ;-) ;-)
en un rato lo pruebo como decis, pero estuve tratando de analizar lo que hace con el serial que ingreso y pone como un millon de ciclos al pedo para distraer y le hace como mil tratamientos a la cadena tambien para distraer al cracker, este programita se me hace que esta bastante bien echito! no digo que sea imposible pero me parece que para alguien que tenga experiencia tambien lo va a hacer renegar un buen rato! :-\
publica avances que tengas y logicamente con deducciones ya que quiero aprender!!

KJD

Pues avancecs tengo, todas los ASCII del tipo "64083C533F18F77F65A383C4F12CAAB5C0F0C8" no son mas que funciones codificadas. es mas si vas a 004420D0 veras como las decodifica. Una cosa mas, dime donde esta la rutina de manejo del serial, asi le echo un vistazo.
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

nutriax

#13
en esta direccion 00445694 empieza a utilizar el serial trucho que lo pone en los registros para procesarlo, en el registro EBP y de ahi en adelante lo procesa varias veces como dije antes.
hya alguien que tiene avances?, yo lo miro y lo miro pero no hay forma!!!!  :( :-(

KJD

Yo lo estuve mirando, si cambias este salto 00445C6F, cualquieer serial que metaas lo tratara como valido y lo escribirra en el archivo de configuracion del programa. Pero despues lo vuelve a comprobar al inicio del programa.

Igualmente si alguien con mas experiencia le echa un vistazo seria mejor.
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

varroas

Hola. Tambien me sumo!! a ver que logramos  ;-)

LSL

#16
otra pequeña aportación,  ;D

si cuando llegamos a la dirección
004192B6   .  A1 F8E44900           mov eax,ds:[49E4F8]

tenemos en
[0049E4F8]=00000000
y si lo cambiamos a
[0049E4F8]=00000010

un par de instrucciones mas abajo eax en vez de tener el valor 28A1, que es = "Evaluation version", tendremos eax= 28A2, que es igual a "Enterprise Edition"


si ponemos en [0049E4F8]=00000000,  eax=28A1, sera igual a "Evaluation version".
si ponemos en [0049E4F8]=00000010,  eax=28A2, sera igual a "Enterprise Edition".
si ponemos en [0049E4F8]=00000020,  eax=28A3, sera igual a "Profesional Edition".
si ponemos en [0049E4F8]=00000030,  eax=28A4, sera igual a "Standard Edition".
si ponemos en [0049E4F8]=00000040,  eax=28A5, sera igual a "Educational Edition".

bueno esto sirve solo para el letrero de Acerca de...  :o
pues luego al compilar un proyecto sigue apareciendo la información de *** Evaluation version ***,  >:(

Tambien el programa tiene comprobacion de CRC o eso creo pues si cambio un par de bytes en el programa este no se ejecuta.  :-(
Saludos.

LSL.

nutriax

alguien tubo mas avances? yo mucho no pude tocar pero esta noche me metoi a ver que saco!, con respecto al usuario anterior he viste osos mensajes pero omo tu dices solamente cambia la leyende y eso no nos sirve! jajaja  :-( :-( :-(
pero yo creo que no es imposible crackearlo, para mi lo que hace cuando ingresan la serial bien es agregar un registro (en el de windows por supuesto) y debe generar algun archivo.
de ultima por el tema de la comparacion del crc que debe tener! y mas que seguro que lo tiene!!! taria bueno averiguar el serial real, entonces no tenemos que modificar nada del codigo aunque este varie de pc en pc pero estaria bueno hacer tipo un keygen. aunque se nos hace dificil encontrar el serial!!!
una pregunta alguien sabe como ver de donde empieza a ejecutar inmediatamente despues de hace click en el boton de aceptar de la ventana del serial?
bamos que no nos puede ganar esta porqueria!!!  :rolleyes: :rolleyes:

KJD

Cuando instalas el peorgrama, este crea un archivo en C:\Datos de programa\HB++ (win vista) y dentro hay un archivo ini en donde guarda el serial y los datos de compania etc. No creo clave en el registro y cada vez que inicias el programa, extrae la clave de ese archivo y la verifica si es correcta o no.

Para lo que preguntas, pon un breakpont en 00445694 y cuando le das al boton para registrar parara aqui, y luegos empiezas a tracear hacia atraz para ver de donde es llamada la rutina.
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"

"Keyboard not Found, press F1 To Continue" WTF???

Mintaka

Cita de: nutriax en 31 Marzo 2009, 02:51 AM
alguien tubo mas avances? yo mucho no pude tocar pero esta noche me metoi a ver que saco!, con respecto al usuario anterior he viste osos mensajes pero omo tu dices solamente cambia la leyende y eso no nos sirve! jajaja  :-( :-( :-(
pero yo creo que no es imposible crackearlo, para mi lo que hace cuando ingresan la serial bien es agregar un registro (en el de windows por supuesto) y debe generar algun archivo.
de ultima por el tema de la comparacion del crc que debe tener! y mas que seguro que lo tiene!!! taria bueno averiguar el serial real, entonces no tenemos que modificar nada del codigo aunque este varie de pc en pc pero estaria bueno hacer tipo un keygen. aunque se nos hace dificil encontrar el serial!!!
una pregunta alguien sabe como ver de donde empieza a ejecutar inmediatamente despues de hace click en el boton de aceptar de la ventana del serial?
bamos que no nos puede ganar esta porqueria!!!  :rolleyes: :rolleyes:

Hola nutriax:
Te voy a dar mi opinión, despues de estar mirandolo en los ratos libres que tengo.

1.- La protección considero que está muy bien elaborada contra los curiosos como nosotros.Para mí, no es una pavada.Claro está que a mí, me queda mucho por aprender.Los caracteres esos que vemos, como por ejemplo (hay varios):
"BD517269E31504141FED089FDD1734"
creo que los usa para desenmascarar o descifrar los datos que tiene del usuario y máquina, almacenados en:

C:\Documents and Settings\All Users\Datos de programa\HB++

Sobretodo llama la atención un tal license.dat  :silbar:

2.-El anti-traza que tiene para evitar monitorizarlo lo vigila con la API:

kernel32.GetTickCount

3.-Lo del CRC yo creo que no es esa la comprobación que hace, sinó una propia para vigilar la integridad de su exe, que tenemos en el HD.Está duro de pelar porque lo hace a través de un hilo que crea y que el ejecutable consulta (supongo que para eso y para otras cosas más).En todo caso vi que cambiando un condicional se soluciona el tema, pero sería a través de un injerto y cuando haya creado la sección que contiene el hilo asesino.Por cierto ese código asesino lo va colocando después de reservar un trozo de memoria.La reserva la hace aquí:

00445A60  |.  FF15 10354700   CALL DWORD PTR DS:[<&KERNEL32.VirtualAlloc>]

en la pila podemos ver los detalles:

0012FC38   00000000  |Address = NULL
0012FC3C   00000F24  |Size = F24 (3876.)
0012FC40   00001000  |AllocationType = MEM_COMMIT
0012FC44   00000040  \Protect = PAGE_EXECUTE_READWRITE

A la vuelta, en el registro EAX, tenemos la dirección a partir de la cual, posteriormente, meterá su código espía.Este valor, que devuelve en EAX, es variable (creo que usa dos direcciones indistintamente alternándolas cada dos o tres ejecuciones) y por supuesto, en cada máquina será diferente.

4.-El mensaje del chico malo nos lo muestra a través de la API MessageBoxW y lo ejecuta aquí:

0042E5A1   .  FF15 38374700 CALL DWORD PTR DS[<&USER32.MessageBoxW>]

en ese momento en la pila vemos:

0012F878   000603D8  |hOwner = 000603D8 ('Handheld Basic ++',class='HbMain')
0012F87C   00D33A40  |Text = "The key you entered is invalid."
0012F880   00D37640  |Title = "Handheld Basic ++"
0012F884   00000010  \Style = MB_OK|MB_ICONHAND|MB_APPLMODAL

Como puedes ver no está en las secciones propias del ejecutable y por eso no aparece en las strings referenced.Por lo tanto debemos ir hacia atrás y ver cuando decide ponerlo.
Me gusta y por eso seguiré informando de mis avances y por supuesto leyendo los vuestros también.
Suerte,

Mintaka
Si lloras por no ver el Sol tus lágrimas no te dejarán ver las estrellas.(Tagore)