Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Keyen Night en 21 Octubre 2014, 21:10 pm



Título: Crackeando un programa [Consulta]
Publicado por: Keyen Night en 21 Octubre 2014, 21:10 pm
Buenos días/tardes/noches a todos en el foro :P

Soy algo nuevo en esto de la ingeniería inversa, así que pido disculpas si alguna afirmación no es correcta en lo que leerán a continuación xDDD

He estado leyendo a Ricardo Navaja y bueno me lance a la aventura de intentar crackear un programa que necesito, por la información que he podido recopilar está escrito en Microsoft Visual C++ 2010, usa Qt para la GUI y está protegido con VM Protect v1.60 - v2.05 según ProtectionId, VM Protect 2.x + Simple UPX cryptor según RDG y VM Protect según DIS. Se que esta protección es una de las más fuertes para ejecutables escritos en C++, pero como todo, difícil pero no imposible; por lo que he buscado recomiendan usar OllyDbg junto con los plugins Phat0m y StrongOD para hacer frente a VM Protect, pues los he cargado al OllyDbg y configurado como se debe (o al menos así parece), el programa ya no detecta al OllyDbg explitamente enviandote el clásico MessageBox indicando que ha detectado un depurador pero se queda sin hacer nada y parece no desempaquetar nada porque aún no se pueden ver los strings ni el código del modulo principal en claro.

De tal manera me fui por el Attach, con los plugins todo funciona bien pero colocar un breakpoint e intentar depurar hace que todo explote xD

No me importo al principio, pues solo quería encontrar el salto condicional y parchearlo jajajajaja, analizando un poco más a fondo básicamente el programa genera un HWID, siguiendo las conexiones con Wireshark he visto que envía por POST los datos a un servidor que en pocas palabras contesta HTTP/OK y un número, siguiendo esa respuesta en el OllyDbg el número termina pasando por un switch, tal como este:

(http://i61.tinypic.com/2i6c1sz.png)

Hay un case del switch para cada error posible (falla de conexión, prueba vencida, datos de conexión inválidos, etc), con su respectiva llamada al MessageBox de Qt para dar la información al usuario. Como no existe un case de éxito y está presente el default case he intentado saltar al default case de una vez pero no pasa nada, el programa se queda sin hacer nada, también he intentado saltar fuera del switch antes de entrar (esto hace que explote xD), imagino que por el estado de los registros.

Llevo varios días pegado tratando de averiguar a donde salta o a quien llama cuando todo sale bien, si alguien me pudiese dar una luz, sobre como depurarlo sin que explote (hace falta desempaquetar?) o hacia donde termina yéndose esto, o cualquier otra cosa que ustedes crean que es lo correcto, estaría muy agradecido.

Esta es la aplicación, es un bot de un juego, el enlace lo coloco desde mi Google Drive, para no poner directo el ejecutable desde la página del fabricante:

https://drive.google.com/file/d/0B3_t7GvNr0xvZTNyaFZqeWkzMjQ/view?usp=sharing

Gracias por leer este testamento xD


Título: Re: Crackeando un programa [Consulta]
Publicado por: Mister12 en 30 Octubre 2014, 21:35 pm
Lo ayuda que solicitas no esta permitida en las reglas del foro. Saludos


Título: Re: Crackeando un programa [Consulta]
Publicado por: Shout en 9 Noviembre 2014, 23:32 pm
Monta tu localhost, redirige el tráfico de esa web a tu localhost con el archivo hosts, y devuelve la respuesta que quieras


 :silbar: :silbar: