Ayuda para crackear un programa

Iniciado por N0mada, 20 Julio 2010, 21:37 PM

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

N0mada

Hola, estoy intentando crackear un programa que tiene 3 protecciones al menos...

Cómo puedo en olly poner un BP para cuando acceda a una clave del registro en concreto para tracear después desde alli ?

es porque el programa accede a la clave de registro para comprobarla así que quizás a partir de ahi pueda llegar a la rutina que comprueba la clave y modificarla para que crea que está bien...no se me ocurre mejor forma de empezar a buscar que esa, acepto todas las sugerencias de los expertos.

MCKSys Argentina

Puedes usar un BP en la API RegQueryValueA o RegQueryValueExA.

El tema es que deberás ejecutar con F9 cada vez que acceda al registro, hasta que llegues a la clave que quieres.

Si el registro lo consulta luego de iniciar la aplicación (por ej. luego de hacerle click a algun boton) puedes ejecutar el EXE  con el BP deshabilitado y habilitarlo antes de hacerle click a dicho boton...
MCKSys Argentina

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


N0mada

Lo primero gracias por responder  :D

el problema es precisamente ese, el programa cuando va a imprimir comprueba que se esté registrado leyendo esa clave de registro y haciendo algo con ella, pero si no lo estás sólo imprime unas pocas líneas y ademas escribe publicidad.
He mirado con el process monitor las llamadas a registro y hay cientos justo en ese momento, carga los tipos de fuentes del sistema, las impresoras del sistema... etc etc junto con la comprobación de la clave para imprimir todo o sólo parte.

por eso quería filtrar más si es posible o si se puede atacar de alguna otro forma...

no se, me he atascado ahí la verdad

a ver si hago progresos...

les cuento!

MCKSys Argentina

Si el programa no está empacado, puedes probar de parchear el salto donde decide si es una copia registrada o no.

Aunque esto depende de "qué" es lo que hace el programa con el serial...  :P
MCKSys Argentina

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


N0mada

Ya...

esque es precisamente dónde no se por donde entrar.

el programa es http://www.simplygest.es/descargas/sgpro.exe

y es justo el problema llegar a ese salto que no se me ocurre como llegar a esa zona caliente.
Quiero encontrar la rutina esa que "hace algo" con esa clave pero no doy con ella. :-[

No se que mas formas se les ocurren para llegar a esa zona caliente ...

Voy a seguir peleandome con la aplicación a ver si alguien arroja algo de luz mientras tanto.

Saludos !

gastonp

Proba con el método que comentó LSL en otro post:

Citarbusca los mensajes en memoria con Alt+M, Control+Inicio y Control+B (para buscar), una vez localizado el texto, le pones un "Breakpoint > Memory on access".

Proba buscando el mensaje "el código de desbloqueo no es correcto" que es el error que te tira cuando ingresas la clave. Luego anda fijandote en el stack a donde regresa y si en ese lugar hay algun salto que lo evite. Si el primer RETURN TO del stack no cumple con esa condicion, baja hasta el siguiente y asi que llegues a una parte de codigo con un salto que evite el CALL que lleva al mensaje de error.
Saludos

tena

en donde tiene para ingresar el registro?

gastonp

Hola tena, cuando ingresas al programa te aparece la ventana principal con varios botones grandes en el medio. Presionas en cualquiera de ellos y te aparece una nag con un contador de 10 segundos despues de los cuales se habilita la opcion de continuar probando la aplicacion. Dentro de esa nag tambien esta la opcion de registrarse.
El metodo mas facil que encontre para romper cerca de la comprobacion del codigo de registro es el que cite en el post anterior. De esa forma llegue a una CALL en la direccion 00DBDFA6 que venia de un JE en 00DBDDB7. Ahi entras en la CALL que esta encima del salto y la parchas para que devuelva un 1 en AL. De esa forma te acepta cualquier codigo de registro y la proxima vez que ingresas ya no aparece la nag.
Luego hay parchar otra rutina para que no aparezca la palabra [DEMO] delante del nombre de la empresa ni la leyenda "Version de demostracion" al imprimir las facturas.

N0mada

Hola,

gracias por las sugerencias gastonp.
Esa primera parte ya la tengo conseguida, de hecho el programa también comprueba que la fecha de modificación sea la del original y si no ... ExitProcess.
Yo uso el SetDateFile para poner la misma del original y así no tengo que preocuparme de cuantos checks ha puesto el programador adicionales...

El problema es que aunque el programa te dice lo de: "El programa ha sido desbloqueado con éxito en este equipo" tras parchear esa rutina con el
mov AL, 1
RETN

en la subrutina hay otra subrutina para la impresión que te dice lo de versión demo...

esa es la que no descubro  y con BP en los RegQueryValueA o RegQueryValueExA hay cientos de BPs porque carga fuentes, drivers, impresoras...

Esa es la rutina que hay que machacar !  ;D

gastonp

#9
Hola N0mada:
Yo antes de buscar la rutina de impresion busque la que hacia que aparezca la palabra [DEMO] delante del nombre de la empresa, y grata fue mi sorpresa cuando al parcharla tambien desapareció la leyenda en la impresión de facturas (sin querer mate dos pajaros de un tiro  ;D). Se ve que la misma rutina maneja ambas cosas.
Para encontrarla busca en las cadenas de texto la palabra [DEMO]. Solo hay dos ocurrencias y estan una debajo de la otra.
Subis un poco en el código hasta la CALL de 00D13ECF. Esa es la que tenes que parchar para que devuelva 1 en AL. De esa forma desaperece tambien la leyenda "Version de demostracion" en la impresion de facturas.
No se si habra alguna otra limitacion, yo solo encontre esas pero como no uso este tipo de programas quizas tenga otras. Es cuestion de probarlo.
Saludos


PD: ah me olvidaba, para que funcionen todos los cambios tenes que hacer un loader