[Crackme] ¿Imposible?

Iniciado por Høl¥, 12 Agosto 2010, 20:39 PM

0 Miembros y 2 Visitantes están viendo este tema.

Høl¥

Hola a todos de nuevo.

He abierto este post porque hoy me surgio una duda existencial.

Explicacion:

Resulta que pense en una proteccion que fuera imposible para el cracker, y creo
que he logrado algo similar (o al menos eso creo).

Imaginense un software que un programador ha hecho, y el tiene una tool que cifra todo el codigo del software menos la 1º funcion con una llave (el serial).

El software al iniciarse aparece en la 1º funcion (no cifrada) que se encarga de tomar la llave(el serial) de un archivo y descifrar todo el codigo del software.

Ahora bien, si nosotros no tenemos el serial valido, no se desencriptara el codigo del programa, tampoco se puede parchear porque no hay saltos, ¿entonces como podemos buscar el serial valido?

He pensado en fuerza bruta (brute-forcing) pero ¿a que le haces fuerza bruta?

Es decir, si no tienes el serial valido vas directo al codigo cifrado, y por tanto te saldran excepciones por todos lados, por lo que crashea el programa.

Quizas haciendo tu propio manejador de excepciones y cada vez que salte una excepcion vaya al manejador de excepciones y de ahi vas otra vez al brute-forcer.

Pero es que aun asi de nada serviria ya que tambien existirian distintas posibilidades, es decir, distintas llaves que den un codigo que no crashee, por lo que el brute-forcer tampoco serviria para nada :S.

=================

Espero que hayais entendido el parrafazo que acabo de hacer xD.

He hecho un crackme que en realidad no tengo intencion de que lo crackeen, si no mas bien un reflejo del parrafazo de arriba, asi lo pueden entender mejor.

Descarga:

http://www.mediafire.com/?3yb79z12t8dkqif

Porfavor, necesito que me expliquen si es posible crackear una proteccion de este tipo, y si es asi como.

De otra forma, si no es posible crackearlo, ¿por que las grandes empresas no utilizan protecciones de este tipo? Ya se que en cuanto saquen el serial les servira para todos, pero tambien se podria mejorar con packers y una proteccion por HWID.

MCKSys Argentina

Hola!

El problema consiste en cuanta gente usara el soft. Si es mucha, creo que solo venderas 1 o 2 licencias.

Una vez que se consiga un archivo "llave" y desencripte el codigo del programa, solo queda dumpear el EXE y anular la "primera funcion". Y con eso, estas en el horno.

Por otro lado, tambien puede analizarse la rutina de encriptacion. Dependiendo de la misma, puede (o no ) haber vulnerabilidades...

Piensa que lo que estas tratando de hacer, es algo parecido a las famosas "dongles" o llaves por hardware. Y a esas, tambien se las puede crackear!  :P

Espero haberte ayudado...

Saludos!
MCKSys Argentina

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


apuromafo CLS

te comento algo real, conoces Armadillo?
eso es la evolucion de todo lo que estas diciendo, cada version de armadillo es diferente, pero la practica es la misma
tengo un programa que sin llave no puede correr, con 1 llave demo dura 10 dias
con 1 llave y un unpacker =desempacado =sin proteccion

ahora bien normalmente se hace bp de acceso en los dialogos y se rastrea donde compara o donde cifra o descifra..

lo mismo pasa en los dongles, pero la diferencia es que dongle, ejecuta dll con servicios que buscan ciertos parametros verdaderos y falsos, y termina siendo casi igual que la anterior
descifrar el servicio con su llave, llega al oep y unpacked.

si vemos themida, ejecuta un driver, luego chequea centenas de cosas, y luego verifica si es registrado o no
si es registrado, pasa ok, si no es registrado nag y todo lo demas

asprotect, y obsidium, entre otras lo mismo, una llave con encriptacion, que llega a ser dificil de desproteger, pero no descifrar el archivo real. aunque no tengas llave, puede intentar, pero tardaras por la virtualizacion de codigo


execryptor puede ser crackeado, pero no hay entendimiento completo de todo el algoritmo, porque las llaves no son suficientes para desencriptarse, y por ende aunque desempaques igual tienes el execryptor ahi..

zprotect y otras idem..hiw+virtualizacion y luego unpacked y nada..

voy a bajar el exe, pero no aseguro nada..

saludos Apuromafo

Høl¥

Muchas gracias a los dos por la info :D
No sabia que ya habian aplicado ideas parecidas, si es que...cada dia
se aprende algo nuevo ^^.

jackgris

Que buena respuesta apuromafo

apuromafo CLS

creo que deberia ser imposible, segun reviso, es un bloque que se realiza un xor con la palabra ingresada, pudiendo escribir lo que se quiera

cual seria el objetivo, descifrar o crear lo que uno quiera? hace un tiempo hubo un reto similar que se llamaba f7 crackme,. y al final paso eso,
tambien paso en un crackme llamado pushme y otros reverseme

porque comienza en un codigo  que uno mismo puede crear.. y termina en ret.

en este caso al igual que IDA (la licencia)
es saber, cuales son los codigos que quieres crear y te dire la llave que realizaras el xor..

si fuera con 1 sola llave, bastaria cryptool, si fuera 1 dword o mas , podria ser posible, pero igual de todas las posibilidades en ese bloque, es como grande

los crackmes educativos para esto, para mi fueron HSN un unpackme, el cual usaba add y sub al,bl

el otro crackme fue el seven, eight , no recuerdo del origen pero si fue dificil encontrar el DWORD correcto, se uso 1 llave para descifrar el bloque mas comun y lo demas crearlo a como uno queria...

saludos Apuromafo

karmany

Además fíjate una cosa: tendrás que hacer un programa demo aparte si quieres que la gente lo testee y eso con cada versión nueva que saques, también si un cracker encuentra la contraseña símplemente con descifrar todo ya lo tiene límpio. Recuerda los nanomites de armadillo, que encriptan y desencriptan.

Yo creo que las protecciones de software están muy estudiadas y todas tienen sus pros y sus contras.
Yo he conocido algún programa como lo que quieres hacer, que sólo lo utilizan unas pocas personas y para crackearlo se necesita obligatoriamente el serial porque la fuerza bruta es practicamente imposible con mi ordenador.


Yurix


Bueno , en teoria se pudiera optimizar la fuerza bruta para que sea mas rapida , si lo que dice Apuromafo es verdad :

"segun reviso, es un bloque que se realiza un xor con la palabra ingresada, pudiendo escribir lo que se quiera"

Se pudiera probar muchas cosas , se pudiera montar un Handle de excepciones e intenar descifrar los primeros 20 o 15 bytes y ejecutar ese codigo , si el codigo "descifrado" se manda a ejecutar y la clave es incorrecta , no se debe avanzar mucho en la ejecucion y se saltara con una excepcion , despues la excepcion (por ejemplo , de codigo incorrecto) se le busca el offset donde salto el error , si esta en el mismo inicio se descarta.

Tambien se pueden descifrar una pequeña porcion de codigo y buscar Numeros Hexadecimales de instrucciones de ASm como un CALL + una direccion que seguro tiene un 00 etc ..

No es imposible.

Saludos

Yuri Grille




http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.

MCKSys Argentina

"If it runs, it can be defeated"

+ORC

PD: Pienso lo mismo  ;D
MCKSys Argentina

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


Yurix


Gracias por penzar lo mismo , estamos en sincraknia  ;-)


http://kapetres.wordpress.com/ < Mi blog sobre ASM

Parece que alguien no quiere que la info sea liebre >

Alguien lo movio a ese lugar.