Site hosted by Angelfire.com: Build your free website today!

CRaCKeaR PRoGRaMaS CoN LíMiTe De TieMPo y eJeCuCióN


En esta seccion aprenderemos como empezar a buscar en un programa protegido con limite de tiempo y/o ejecucion. Lo mas habitual es que nos dejen unos pocos dias para que lo “evaluemos” y despues de XX dias deja de funcionar, otros te permiten usarlo hasta el dia dia/mes/año y despues de eso... nada de nada... dejan de funcionar. Nosotros lo que haremos es evitar esto ;)

Si nos encontramos con un porograma de este tipo y no tenemos ninguna opcion para registrarlo con un serial, keyfile o cualquier otra cosa, habra que seguir una serie de pasos.

- Lo 1º que se nos ocurriria es buscar en el codigo una rutina que compruebe si han pasado 30 dias desde la instalacion o si el dia en que nos encontramos ha excedido el limite que posee el programa. Para ello pasaremos los dias que el programa funciona a hexadecimal (por ej. 30 dias en decimal son 1E dias en hexadecimal), y en el caso en que sea una fecha tb pasaremos el mes y el año. Despues entrariamos en el Win32Dasm (por ej.) y buscariamos 000000XX, donde XX es la cifra pasada a hexadecimal. Como podeis suponer encontraremos muchas sentencias que contengan esta cifra pero hay que darse cuenta de que nosotros tan solo buscamos una comparacion, asi que tan solo haremos caso de las comparaciones. Ej.:

:00XXXXXX 83FB1E cmp ebx, 0000001E <- Comprueba los dias que han pasado con 30 dias

:00XXXXXX 7E07 jle 00471BC4 <- Si es menor o igual salta a buen-chico, en caso contrario... no funciona

Despues deberiamos apuntar las direcciones que hacen esas comparaciones, entrar en SiCE y poner un bpx a cada una de ellas, darle al F5 y comprobar cual de ellas salta primero, es decir, la 1º que hace la comparacion para determinar si el programa funcionara o sera restringido. Y bueno, lo siguiente no deberia deciroslo xD debeis cambiar ese JLE por un JMP o podeis cambiar ese CPM EBX,1E por un MOV EBX,1 para que crea que siempre es el mismo dia... lo dejo a vuestro gusto. Despues de eso tendre un porgrama para “evaluar” toda la vida xDDDD. No hace falta que os recuerde que este metodo de cambio de JLE a JMP es siempre correcto, existen otras muchas formas de evitar esa comprobacion o cualquier otra tonteria que se le halla ocurrido al programador :D

- Hay otro metodo que consiste en dejar que el programa expire (no me seais de pueblo y dejeis pasar 30 dias!!!! adelantad el reloj!!! xDD) y esperar que nos salga una ventana que nos indique que el programa ha expirado. Estudia el codigo buscando la funcion que llama a esa dichosa ventana neutralizala. Este metodo es un poco “tonto” pq os encontrareis, seguramente, cerca del codigo una comprobacion de la fecha, es decir, comprueba la fecha, si es igual o menor... sigue, en caso contrario que aparezca un ventana y salga del programa.

 

Practicamente lo mismos pasos has de realizar en un programa protegido con limites de ejecucion. Estos programas son de los que te dejan ejecutarles XX veces y despues no funcionan. Para ello deberiamos buscar en el codigo una comparacion de este estilo:

cmp eax,000000XX <- Donde XX es el numero de veces que se puede ejecutar el programa

jle [address] <- Si es menor o igual salta a "pareces legal" xD, en caso contrario te manda a hacer puñetas...

Una vez encontrado podriamos aventurarnos con el comando bpm del SICE sobre la direccion de memoria, el cual nos permite saber cuando se accede a esa direccion ya sea para leer o escribir (mirar en la seccion del SICE), esto nos servira para saber cuando el programa comprueba las veces que ha sido ejecutado porque no todos lo hacen al ejecutarse, yo me he encontrado con algunos que lo hacen al terminar, es decir, al cerrar el programa, incrementan el contador y comprueba si en la siguiente ejecucion sigue rulando o no. El metodo para librarse de esta molesta proteccion es exactamente igual a como hemos indicado antes con las protecciones de tiempo (no te lo voy a exlicar de nuevo xDDD).