Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: jose199000 en 14 Noviembre 2019, 19:28 pm



Título: Imposible obtener serial de un programa
Publicado por: jose199000 en 14 Noviembre 2019, 19:28 pm
Hola, primero ante todo presentarme a este magnífico foro, de donde he aprendido muchísimo sobre ingeniería inversa, cada día ampliando mas conocimientos sobre el tema.

Pues nada, llevo varias semanas intentado averiguar el serial de un programa o intentar parchearlo:

He analizado el .exe con RDG, tiene compresión aPLib, pero el contenido se puede visualizar.

(https://snipboard.io/mfKLCF.jpg)

Con la versión sin serial se pueden ejecutar 200 acciones, después, el programa te pide comprar la licencia.

Aquí encuentro y modifico la comprobación en el numero de ejecuciones en la versión sin licencia (200) (0C8), he aumentado ese valor pero el programa detecta que se ha modificado y salta un mensaje "Problem with license" del cual no puedo encontrarlo en text string.

(https://snipboard.io/d6n5VK.jpg)

El serial es un archivo .txt de 16 bytes, calculado según el identificador de la computadora, encuentro un posible serial, pero al insertarlo, obtengo un mensaje "licencia caducada".

(https://snipboard.io/Sj6Dsr.jpg)


He conseguido encontrar el archivo que crea en el registro donde guarda el nº de ejecuciones, y cuando llega a 200 cierro programa y lo modifico a valor "0".

Mi principal problema es que cualquier valor que se modifique con Ollydbg el programa lo detecta y salta el mensaje "Problem with license" y deja de funcionar , es posible que tenga alguna API de comprobación?

Espero que puedan ayudar haber si lo consigo de una vez por todas, muchisimas gracias.

Saludos!!!

 ;-)

MOD: Titulo a minusculas


Título: Re: Imposible obtener serial de un programa
Publicado por: xor.pt en 14 Noviembre 2019, 23:17 pm
Hola, prueba esto.

Poner puntos de interrupción en las API...
MessageBoxA, MessageBoxExA, MessageBoxExW
Que son de dll user32.dll

Cuando pare, escriba "RET".
Cuando realice RET, volverá a la fuente del mensaje.
Ahora puede saber dónde cortar este error.

Saludos.

MOD: Titulo a minusculas


Título: Re: Imposible obtener serial de un programa
Publicado por: jose199000 en 15 Noviembre 2019, 09:18 am
Hola, prueba esto.

Poner puntos de interrupción en las API...
MessageBoxA, MessageBoxExA, MessageBoxExW
Que son de dll user32.dll

Cuando pare, escriba "RET".
Cuando realice RET, volverá a la fuente del mensaje.
Ahora puede saber dónde cortar este error.

Saludos.

Hola, gracias por la ayuda, se me olvido comentar que en el programa no existen ventanas emergentes, todos los mensajes se imprimen en la misma ventana, por eso no existen las API que mencionas.

Las instrucciones que parcheo son correctas, pero cuando modifico cualquier byte del código del .exe con ollydbg, guardo el archivo y lo ejecuto, "algo" sabe que el exe ha sido modificado, que es cuando obtengo el msg en la misma ventana "Problem with license", y esta cadena de texto no la puedo encontrar en "text string".

Un saludo!

MOD: Titulo a minusculas


Título: Re: Imposible obtener serial de un programa
Publicado por: xor.pt en 15 Noviembre 2019, 20:06 pm
Recomiendo usar otro depurador, quizás x64 dbg.
Otra cosa, esto imposible no existe.
Es posible que necesite características como depurador y complementos más sofisticados.

x64 dbg + SharpOD por ejemplo.
Saludos


Título: Re: Imposible obtener serial de un programa
Publicado por: jose199000 en 16 Noviembre 2019, 14:51 pm
Hola, probaré con otro depurador a ver si puedo  obtener mas detalles, adjunto una imágen del programa donde después de modificar simplemente 1 byte del programa con ollydbg aparece el siguiente mensaje:

(https://snipboard.io/pDP78K.jpg)

Este texto sería el punto de zona caliente, pero no puedo encontrarlo por ningún lugar, ni en text strings ni nada...

Saludos!


Título: Re: Imposible obtener serial de un programa
Publicado por: xor.pt en 19 Noviembre 2019, 00:20 am
Si puedes compartir el programa ...Estoy interesado en colaborar.
Saludos.


Título: Re: Imposible obtener serial de un programa
Publicado por: jose199000 en 19 Noviembre 2019, 19:31 pm
Si puedes compartir el programa ...Estoy interesado en colaborar.
Saludos.

Hola, te he enviado por MP el instalador.

Después de instalarlo y crear el archivo de licencia y ejecutarlo, al no ser correcta la licencia mostrará en pantalla:

"license file found but..."

Ahora busca este texto en "references" y veras que apuntan dos "JNZ":

1ºJNZ: Salta si la longitud de la licencia es inferior a 16 bytes (no saltará si en el archivo de licencia tiene 16 bytes o mas).

2ºJNZ: Este el importante, donde debes buscar en sus instrucciones anteriores, donde veras que genera una licencia de 16 bytes:

(https://snipboard.io/Sj6Dsr.jpg)

Pero después al copiarla al archivo de licencia, obtendrás el mensaje:

"license has expired"

Buscas "license has expired" en references y verás muchas entradas, la que salta es la 2º buscada.

Y ahí es donde estoy atascado sin poder avanzar. >:D

La licencia la genera a partir de un Computer-ID.

P.D.: NO INTENTES MODIFICAR EL PROGRAMA CON OLLY YA QUE CUALQUIER CAMBIO REALIZADO SEA EL QUE SEA EL PROGRAMA LO DETECTA Y DEJA DE FUNCIONAR MOSTRANDO ESTE EL MENSAJE "PROBLEM WITH LICENSE":

(https://snipboard.io/pDP78K.jpg)

Gracias por la ayuda, lo conseguiremos!!!

Un saludo!  ;)
 


Título: Re: Imposible obtener serial de un programa
Publicado por: xor.pt en 20 Noviembre 2019, 03:08 am
004CAA3A > jmp 0x004CAC57


Saludos.


Título: Re: Imposible obtener serial de un programa
Publicado por: tincopasan en 20 Noviembre 2019, 03:23 am
si ya lo resolvieron, bravo! sino me gustaría ver el instalador.


Título: Re: Imposible obtener serial de un programa
Publicado por: jose199000 en 20 Noviembre 2019, 19:12 pm
004CAA3A > jmp 0x004CAC57


Saludos.

Hola gracias por intentarlo, pero esa modificación ya la probé anteriormente pero siempre obtengo este error después de modificar con olly:

(https://snipboard.io/pDP78K.jpg)

Un saludo!👌


si ya lo resolvieron, bravo! sino me gustaría ver el instalador.

Hola gracias por tu ayuda, te he mando el instalador por MP, te deseo suerte con la búsqueda del serial, puedes seguir las instrucciones de los mensajes anteriores.

Un saludo!😜

MOD: No hacer doble post. Usa el boton modificar.


Título: Re: Imposible obtener serial de un programa
Publicado por: xor.pt en 22 Noviembre 2019, 15:47 pm
Este programa envía y recibe datos del servidor externo, puede ser que el mensaje provenga del servidor, no en binario.
No recibí este error porque en realidad no lo usé
Si es así, no tiene sentido generar las contraseñas de activación.
Una idea, puedo estar equivocado.
Saludos



Título: Re: Imposible obtener serial de un programa
Publicado por: jose199000 en 22 Noviembre 2019, 19:02 pm
Este programa envía y recibe datos del servidor externo, puede ser que el mensaje provenga del servidor, no en binario.
No recibí este error porque en realidad no lo usé
Si es así, no tiene sentido generar las contraseñas de activación.
Una idea, puedo estar equivocado.
Saludos



Hola, esta bien, dejemos de momento apartado el tema de obtener la licencia.
Ahora eliminamos el archivo de licencia para que no compruebe el serial, y pase a ser la versión de prueba, que con ella puedes hacer hasta 200 ejecuciones, entonces únicamente parcheo la instrucción donde está el límite "0C8" que son 200 en decimal:

(https://snipboard.io/d6n5VK.jpg)

Después de esta modificación vuelve a salir el texto "Problem with license".
Mi pregunta es, según la idea que has planteado, podría el programa hacer una comprobación de su código y enviarlo a un servidor externo para comprobar que ha sido modificado y entonces congelar el programa?

Otra consulta, donde has podido encontrar que se comunica con un servidor?

Muchas gracias por tu tiempo, continuaremos intentandolo, un saludo!