Ayuda con Programa que se cierra al modificarlo

Iniciado por N0mada, 17 Octubre 2009, 16:07 PM

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

N0mada

Buenas,

estaba intentando meterle mano  :silbar: a un programa y todo va bien mientras lo lance intacto y modifique con olly. Pero si guardo las modificaciones se me cerraba nada mas abrir, al principio creí que estaba haciendo algo mal, pero he probado a cambiar un byte de una cadena de texto cualquiera y también se cierra, así que imagino que tendrá algún tipo de comprobación de integridad con CRC o ...

me podéis ayudar a confirmar (/desmentir) y anular esta protección ?

por cierto el programa es http://www.simplygest.es/descargas/sgpro.exe
una vez instalado, SimplyGest.exe

gracias!

ThunderCls

si te sucede justamente al modificar el .exe los mas probable es que tenga alguna comprobacion de integridad del ejecutable, como bien dices puede ser CRC.
En tu caso para caer en la zona de la comprobacion intenta poniendo BP en las APIs, ExitProcess, TerminateProcess o cualquier otra que te detenga la ejecucion de la aplicacion en el momento que decide cerrarla. De aqui en adelante todo radica en el "Zen Cracking", o sea, vas mirando en la pila las direcciones de retorno y las vas verificando, cuando veas algun salto o alguna comprobacion sospechosa...bueno, por ahi debe estar la cosa. Todo es cuestion de ir atras en el flujo del programa y descubrir el salto(mayormente), que determina que hay o no un fallo de integridad del ejecutable
salu2
-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

MCKSys Argentina

Tambien deberias intentar ver si el chequeo lo hace sobre el EXE en memoria o en el del disco.

Si hace el check en el archivo en disco, puedes usar OpenFile para detectar la ubicacion del CRC.

Saludos!

MCKSys Argentina

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


N0mada

Pues nada, que no lo consigo, llego al ExitProcess pero a la hora de tracear para atras no doy con el salto o la condición. Pongo BPs pero si lanzo el programa original nunca llega a esa sección del código así que no doy con la zona en cuestión.
Comprobado por cierto que no tira de archivo así que lo tendrá grabado a fuego en el código el CRC o lo que sea.
Si me podéis orientar os lo agradecería la verdad...

ThunderCls

-[ "...I can only show you the door. You're the one that has to walk through it." – Morpheus (The Matrix) ]-
http://reversec0de.wordpress.com
https://github.com/ThunderCls/

tena

Lo que podes hacer es parcharlo desde una de las dlls que carga...

slds

tena

decime donde hiciste esos cambios
porque yo lo modifico en cualquier lado y
sigue funcionando..

PeterPunk77

Ayer por la noche (vamos de la noche del jueves al viernes) he estado trasteando con el programa.
No hace ninguna comprobación de CRC, sino que comprueba la fecha de modificación del archivo con una fecha que tiene. En la versión que he probado:
8.6.2.4916 del 23 de Octubre comprobaba eso, que la fecha de modificación fuese "092310" (lo comprueba como cadena en el procedimiento 0x00405D94) y si no coincide guarda un 1 en 0x00E06DF1. Hace esta comprobación en varios sitios.

Ahora me voy a acostar, pero en cuanto tenga tiempo escribo un minitutorial de como llegué a ese punto, por eso de enseñar a pescar y no dar los pescados.

N0mada

Gracias PeterPunk77 !


bueno por lo menos no eran imaginaciones mías eso de que alguna comprobación hacía...

si esque eso es precisamente a lo que quiero llegar, abrir el programa y poder ver qué hace,cómo lo hace, si es un CRC, MD5 o si es la comprobación de la que tu hablas o cualquier otra trampa del programador...
en fin supongo que eso viene con la práctica y metiendo horas, espero ansioso tu minituto mientras tanto aparco el tema y sigo con los tutos de olly.

Muchas Gracias a todos.