¿Cómo verifica un programa que hay una version nueva de sí mismo?

Iniciado por SalvadorDali, 1 Octubre 2006, 00:20 AM

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

SalvadorDali

Hola..
He estado tratando de crackear un programa del cual hay un keygen publicado ya..pero dicho programa deja de ser funcional cuando al introducir el serial y detecta que hay una version nueva, ya que uno de las clausulas que estan salen al momento de instalarlo es que al haber una version nueva la version vieja debe ser destruida y debe ser bajada la nueva..

Ahora la pregunta mia es:
¿Cómo hace un programa para saber que ya existe una nueva versión de si mismo publicada en internet?

Y otra pregunta:
Si abro el programa con olly y detecto cual es la instruccion que envia a la nag dice que hay una nueva version, y cambio esa instrucción es posible que el programa funcione con el crack publicado?
saludos

i686

Para que un programa compruebe si hay una versión nueva de sí mismo en Inet, no le queda otra que conectarse a Inet, al servidor que tenga la empresa que lo diseñó, y comparar su versión con la del servidor. Seguramente tendrán algún fichero que el programa consulta para hacer la comprobación. Lo que si es seguro casi al 99.9% es que se conecta a su propio servidor.
Respecto a desensamblar el programa, cambiar la instrucción, reensamblarlo y saber si funciona... Lo mejor es que lo pruebes tu mismo.
La puerta mejor cerrada es aquella que puede dejarse abierta.

SalvadorDali

claro amigo,.estoy en eso desde hace dias...ando probando  probando.. pero mira, yo tambien me supuse que deberia conectarse a algun lado en internet para hacer la comprobacion...Pero lo extraño es que, precisamente para verificar eso, instalé el programa en una PC sin conexión de ningun tipo a internet e igualmente me dijo q habia una version mas reciente publicada...No comprendo como hace para saberlo sin estar conectado a Inet..
Ando tratando de encontrar el serial correcto desensamblandolo en Olly pero hasta el momento no lo encuentro...

Tambien probe cambiar un salto condicional (de JZ lo cambie a JMP) que esta justo debajo de la comparacion del serial correcto con el que yo ingreso, y en efecto al correr el programa e ingresar cualquier serial inventado me sale el aviso de que el programa ha sido exitosamente activado..pero incluso luego de haber mostrado ese mensaje sigue comportandose como no registrado.
Eso es algo que tambien e tiene algo desconcertado

tena

Pues es que al cambiar el salto lo unico que logras es mostrar el mensaje bueno en vez del malo. Si hay un call antes de ese jz, lo de cambiar el salto solo funcionaria totalmente si ese call esta referenciado desde un solo lugar, pero si es llamado desde varios lugares no funciona ya que esas otras llamadas podrian ser para habilitar botones, menues,y lo que se le ocurra al programador.

Saludos Tena

karmany

De esta página te puedes descargar el código fuente en VB .NET que hizo el Guille para un programa suyo:
http://www.elguille.info/NET/vs2005/utilidades/gsColorearCodigo.htm

Si te fijas cuando pulsas en "acerca de" el programa comprueba si existe una nueva versión.. Échale un vistazo...

_GeMiNi_

antes del salto debes de tener una call o por lo menos una comparación del tipo test al, al o una simple cmp psss pero por lo general siempre unas líneas antes tienes una call... si es asi fijate con q valor el salto se activa o no segun sea y va al mensaje bueno... una vez q verifiques q valor hace eso empieza a jugar con esa call psss primero mira lo q hace y con q registros trabaja dps pon un bp  sobre ella y cada vez q entres con f7 ve buscando q de seguro veras q hara calculos matemáticos y/o comparaciones con el serial q ingreses o sea el serial malo... y sino solo haz esto en el principio de esa call remplazas la primer instruccion por una asignandole el valor q corresponda al registro q use en la comprobacion.. dps en la linea siguiente le pones un ret y listo...

Si eso no funcionó o no existe esa call es porque estas dentro de esa call... y si esta call solo es llamada una vez o es solo el procedimiento de un boton es porque el serial se comprueba en varios lados y de seguro uno de esos lados es en el arranque del programa (por lo general son los q piden reiniciar el programa luego del registro )..

weno suerteeeeeee

SalvadorDali

Ok,.gracias..estoy poniendo en practica todo eso..seguiré intentando  ;)

SalvadorDali

he estado tratando de hacer algunas modificaciones con el olly..pero cuando intento modificar alguna instrucción, estando dentro de una call, no lo copia directamente al ejecutable como lo hacía regularmente.. sino que intenta guardar el cambio en una DLL..entonces despues de la advertencia de que si deseo sobreescribir la DLL me dice que no puedo guardar los cambios..
A qué se debera eso?
Saludos

_GeMiNi_

mmm puede q la dll sea de sistema y no del programa en si puede q sea del runtime... o puede q sea del programa... psss pa modificar la dll hacelo con un editor hexa o el w32dasm emparchado q le agrega el editor rapido... modificala solo si es una dll espcífica de ese programa sino si es compartida o de sistema no lo hagas .... psss pero te conviene debuguear esa parte para ver q hace je ...ps a lo mejor te va a llevar bastante tiemp pero ponete con algun manual de ensamblador y lee linea por línea pa ver q joraca hace... je  yo hago asi cuando se me queman los libros juas con mi super manual de aesoft al lado (impreso y encuadernado.. y me lo hicieron gratisss!!!! :P) ... me pongo a leer instruccion por instruccion y si no recuerdo alguna la busco y me fijo q hace sus propiedades .. jeje weno de welta suerteeess

SalvadorDali

okas, sigo poniendo en practica todos esos aportes valiosos...
cualquier cosa posteo de nuevo
gracias  ;)