elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Crackme 03 by _Enko Actualizado winxpsp3 compatible
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] 4 5 6 Ir Abajo Respuesta Imprimir
Autor Tema: Crackme 03 by _Enko Actualizado winxpsp3 compatible  (Leído 22,336 veces)
Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #20 en: 17 Agosto 2011, 14:48 pm »

orale ya esta porque yo buscaba otra instruccion de mensage.
Lo que tenemos que hacer es buscar la instruccion de comparacion cual nosmanda al error y cual no
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #21 en: 17 Agosto 2011, 14:56 pm »

Las comprobaciones estan para protegerte y dar pistas.... si te las salteas, 99% seguro que el programa crashee.
En línea

Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #22 en: 17 Agosto 2011, 15:11 pm »

mi objetivo no es invertir el salto si no que encontrando esa instruccion de comparacion mas arriba debe benir el algoritmo que nos crea el serial correcto
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #23 en: 17 Agosto 2011, 15:21 pm »

Mh...este no es un crackme de tipo visual basic, no vas a encontrar esto:
Código:
lpszValidSerial = GenerateSerial(lpszUser);
if(strcmp(lpszValidSerial, lpszSerial) {
         GoodBoy();
} else {
         BadBoy();
}

La regla numero 1 de las protecciones:
Nunca, bajo ninguna circunstancia, NUNCA se coloca la rutina que genera serials validos dentro del programa.


Eso solamente lo hacen programadores inexpertos o perezosos que no son capaces de crear la rutina inversa de la generacion de serials. Es decir, la rutina de comprobacion.

Saludos
En línea

Tinkipinki

Desconectado Desconectado

Mensajes: 242



Ver Perfil
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #24 en: 17 Agosto 2011, 15:49 pm »

Hola _Enko:

Citar
La regla numero 1 de las protecciones:
Nunca, bajo ninguna circunstancia, NUNCA se coloca la rutina que genera serials validos dentro del programa.
Referente tu comentario quieres decir que las generaciones i comparaciones de serials se suelen hacer pasando parametros a una dll que a su vez retorna algun dato que luego interpreta el ejecutable..?

Haber si los que vais siguiendo el tema os animais un poco y decis la vuestra, ....es que esta feo que haya de ser el autor el que nos vaya guiando hacia la posible solucion. :-[

Por mi modesta parte voy tirando y llego aqui. Creo que no es gran cosa, pero bueno por animar un poco:

Entre 004028D8 y 00402917 creo que hay un bucle que analiza el serial que hemos entrado  pero no logro saber que hace.
Antes en 004028C7 hay un SSCANF formateado con %08X pero lo que no tengo claro es lo que devuelve si la longitud del serial entrado o comprueba que no hayan espacios.
Creo que el valor devuelto es en octal por %X pero no se que pinta el 08.
¿Cómo lo veis vosotros…..?

Saludos
En línea

Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #25 en: 17 Agosto 2011, 16:10 pm »

pero aclarame una cosa dependiendo el usuario que le pongas es el serial que te genera que no
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #26 en: 17 Agosto 2011, 16:17 pm »

No, no tiene nada que ver con DLL. Es matematica o  matematica booleana/logica pura.


Suponte esta pseudo rutina de generacion:
(usuario 4 letras)
(serial 4 letras)

usuario xor llave = serial.


de ahi se puede deducir:
serial xor usuario = llave
serial xor llave = usuario




la rutina de comprobacion NUNCA DEBE SER
serial valido = usuario xor llave
comparar (serial valido, serial introducido)

Porque no? porque le estas dando la respuesta al cracker.

Lo que si puede hacerse, es:
llave prueba = serial xor  usuario
comprar(llave prueba, llave maestre)


obviamente XOR es solamente simbolico, la rutinas de generacion/validacion suelen ser mas complicadas, mas rebuscadas, etc... Pero el principio basico es el mismo.
NUNCA, NUNCA colocar la rutina de generacion dentro del programa. Si obviamente de comprobacion.

y la regla basica del reverser/cracker:  La rutina de generacion es la inversa de la rutina de comprobacion.
En estos casos, toca pensar un poquito. Si el programa tuviera la rutina de generacion, es ya asunto resuelto.

Espero haberte aclarado la duda y no haberte confundido mas.



Flamer:
En mi crackme, existe solamente un serial valido para cada usuario. Si le cambias 1 letra al usuario, minimo 8 bytes del serial van a cambiar.

Tinki
Citar
Creo que el valor devuelto es en octal por %X pero no se que pinta el 08.
fijate documentacion sobre alguna de estas funciones: sscanf/wsprintf/sprintf/printf etc...
%X o %iX indica un numero hexadecimal.
8 indica la cantidad de caracteres a devolver
0 antepuesto al 8, indica que si faltan caracteres, en vez de poner espacios, coloca 0 al principio.
es decir 1234 se convierte en '00001234'




« Última modificación: 17 Agosto 2011, 16:22 pm por _Enko » En línea

Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #27 en: 17 Agosto 2011, 16:22 pm »

Citar
Referente tu comentario quieres
decir que las generaciones i
comparaciones de serials se
suelen hacer pasando
parametros a una dll que a su vez
retorna algun dato que luego
interpreta el ejecutable..?
no es asi no utilisa una dll el codigo que genera los seriales esta dentro de un call
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.513


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #28 en: 17 Agosto 2011, 18:24 pm »

El reto esta en descifrar el codigo (Call de 402689): hallar el inicio y el fin (los cuales estan en el serial) y despues usar herramientas criptograficas (Cryptool) para descifrar el codigo, ya que a cada byte hay que XORearlo con cada 1 de los 32 bytes de la llave.

De los 32 bytes, los 8 primeros los brinda el proggie: 1B1C1D1F (en chars)

Los restantes son los que salen del resultado de la funcion 4028B5 (esta es la que habria que reversear), aplicados a los chars restantes del serial.

Por lo pronto, haciendo un reg.txt que comience con 000000000000F1E1FD9 , permite pasar el primer checkeo (al menos eso me da a mi). El resto deberian ser 25 chars (hexa?).

Esto lo he sacado analizando el EXE que no funcionaba, asumo que el que funciona deberia ser identico (todavia no lo pude mirar  :P)

Eso es todo por ahora...
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Crackme 03 by _Enko Actualizado winxpsp3 compatible
« Respuesta #29 en: 17 Agosto 2011, 18:44 pm »

El exe que "no funcionaba" si es identico, pero la 2da y la 3ra llave maestra (inicio/fin) varian porque obviamente la ejecutable varia.

Al principio creia que la ejecutable era muy dificil de parchear, pero ahora que lo estoy viendo, sabiendo la info que tienes, es perfectamente factible  realizar un self uncrypt al principio de la ejecutable y llamar la rutina de registro ya decifrada.
 

para hayar el inicio y el fin no es tan complicado como parece, la ejecutable tiene tan solo unos 8-9 bloques que parecen encryptados.

Como pequeña ayuda, añado que los bloques cifrados son enteros, es decir, desde el ret del procedimiento anterior hasta el comienzo del proximo procedimiento.
Esta hecho asi a proposito para facilitar el decifrado.

Sobre cryptool, no hara falta, dentro del bloque encryptado hay cadenas de texto... y sabiendo que son caracteres hexa... las posibilidades son muy pocas, manaualmente con un poco de tiempo se pueden deducir.
« Última modificación: 17 Agosto 2011, 18:47 pm por _Enko » En línea

Páginas: 1 2 [3] 4 5 6 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tutorial actualizado
Ingeniería Inversa
ruben0909 3 2,909 Último mensaje 25 Febrero 2006, 01:46 am
por ruben0909
Os dejo un crackme, mi primer crackme ^^ « 1 2 »
Ingeniería Inversa
frankener1986 14 13,632 Último mensaje 14 Agosto 2006, 00:59 am
por sircid
[CrackMe] - D-CrackMe by .:WindHack:.
Ingeniería Inversa
.:WindHack:. 3 4,260 Último mensaje 26 Julio 2010, 23:45 pm
por .:WindHack:.
No aparece Microsoft Office Document Image Writer en winXPsp3
Windows
hunter18 3 6,659 Último mensaje 19 Octubre 2010, 16:03 pm
por Randomize
Nod 32 actualizado
Software
mapers 6 4,429 Último mensaje 10 Marzo 2011, 16:28 pm
por Edu
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines