Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Eleкtro en 14 Septiembre 2017, 13:02 pm



Título: Programa "sencillo" y serial...
Publicado por: Eleкtro en 14 Septiembre 2017, 13:02 pm
Hola.

Tengo un programa el cual considero una utilidad de uso genérico que todos deberiamos tener a buen resguardo en nuestro directorio de herramientas, sirve para buscar, eliminar, mover o renombrar archivos con nombres largos de Windows (que excedan los 256 caracteres). Estas funcionalidades se pueden reproducir en la programación mediante una sintaxis especial al escribir la ruta del archivo en ciertas funciones de la API de Windows, y de forma común un usuario sin conocimientos de programación puede escribir un simple comando en la consola de Windows (usando una sintaxis especial tambíen), pero creo que es muy util tener una aplicación con interfáz gráfica que tiene todas estas funcionalidades ya implementadas, lo que nos hace la vida más facil para solucionar este tipo de problemas de forma puntual en nuestro PC, o de forma profesional al reparar PCs de clientes para solucionar conflictos de nombres largos en su sistema de archivos o filesystem.

Llevo 2 semanas intentando contactar con el autor del programa pero no hay modo, no obtengo respuesta, así que doy por hecho que el programa está abandonado y ya solo me queda intentar craquearlo.



Esta es la información que he logrado obtener:
(https://i.imgur.com/01m5CNb.png)

Como pueden ver se trata de un executable, aparentemente empacado con UPX, y sin librerías/dependencias adicionales. El entry point (OEP) está en la imagen.

El programa pide un serial (un campo para el "UserID", y otro campo para "LicenseKey"):
(https://i.imgur.com/w8BjGCM.png)

Yo dispongo de una clave trial para registrar el programa durante 3 dias en el que es completamente funcional durante ese tiempo. Eso me ha permitido descubrir que los datos de licencia se almacenan en una clave de registro sin codificación alguna:

Código:
[HKEY_CURRENT_USER\SOFTWARE\NOMBRE DEL PROGRAMA]
"Login"="Trial78c7-54125943-81A58215-BB6F-1176-C828-A71B361C22F3"
"Key"="GeUcqHLz-uIdS6g/X-J/V1XPhr-T9QxDS4r-HEFBhM/0-QcXAeokh ZfMfo2/4-2egULxbs-K7M3hUKY-hTCsVslR-0VDVYfMq-B7K3b80a YDo479nS-WXGrnULk-4fkcJFrr-7Vxg8OLn-GYLZJmTn-Hp63WZq9 MwcmPmj6-DYHZH/eP-Wo1iXB8r-L80="



Encontré este tutorial:
  • Unpacking a UPX file manually with OllyDbg (http://www.behindthefirewalls.com/2013/12/unpacking-upx-file-manually-with-ollydbg.html)
...pero al final opté por usar una herramienta llamada UPX Unpacker que encontré aquí:
  • https://reverseengineering.stackexchange.com/a/8319/2213

(https://i.imgur.com/7H7U3CQ.png)

A partir de aquí, no sé exactamente como proseguir con el OllyDBG.

Mi pregunta es la siguiente: ¿alguien podría estar interesado en ayudarme a craquear este programa?, de lo contrario, ¿podrían aconsejarme que pasos debería seguir en OllyDBG teniendo en cuenta por favor que no sé nada de opcodes y bastante poco de ing. inversa en general?. (mi intención no es aprender el mundo del cracking, lo que me llevaría años. esto es solo una duda puntual donde necesito averiguar lo básico para craquear este programa en concreto.)

Por si les interesa probar, aquí les dejo un enlace a un archivo comprimido que contiene el programa desempacado y la licencia trial:

  • http://www.mediafire.com/file/a9bdwlhdzo54p9a/unpacked.zip

Gracias por leer.


Título: Re: Programa "sencillo" y serial...
Publicado por: Flamer en 14 Septiembre 2017, 19:27 pm
sácame de dudas si no registras el programa, se bloquea y ya no te deja usarlo

por que si no es así pienso que con el Resource Hacker puedes eliminar esa ventanita de registro y listo

saludos Flamer y pidiendo cracks eso no va contra las reglas


Título: Re: Programa "sencillo" y serial...
Publicado por: Eleкtro en 14 Septiembre 2017, 19:49 pm
sácame de dudas si no registras el programa, se bloquea y ya no te deja usarlo

Hola, gracias por responder.

Si no se registra el programa, los botones de la interfáz de usuario se deshabilitan, y los nodos del treeview también. En resumen, que no se puede usar ninguna funcionalidad del programa.

Saludos!



Tras casi un mes sigo sin poder avanzar en el asunto, ¿alguien podría ayudarme u orientarme?. :(

Gracias por leer.


Título: Re: Programa "sencillo" y serial...
Publicado por: n1sen en 8 Octubre 2017, 19:13 pm
El software que intentas usar, el cual es FileTooLong, es Adware, lo instale y me instalo virus por todas partes, por suerte alcanse ha aislar el pc del internet.
Pero yo nunca me he topado con archivos con nombres tan largos...


Título: Re: Programa "sencillo" y serial...
Publicado por: Eleкtro en 8 Octubre 2017, 20:37 pm
El software que intentas usar, el cual es FileTooLong, es Adware, lo instale y me instalo virus por todas partes, por suerte alcanse ha aislar el pc del internet.
Pero yo nunca me he topado con archivos con nombres tan largos...

...¿?, ¿el que dices que has instalado exactamente, si yo no he compartido ningún instalador?. Quiero pensar que no estás mintiendo intencionadamente como para "intoxicar" o arruinar mi petición de ayuda con este programa y que simplemente te has equivocado por el motivo que sea...

En el archivo comprimido que he compartido en MediaFire no contiene ningún instalador, ni mucho menos un instalador adware. El archivo zip que he compartido contiene un archivo executable (packed.exe y unpacked.exe) que es el programa en si, el cual no es adware, no genera ningún tipo de publicidad ni instala absolutamente nada, al ejecutarlo NO GENERA ningún archivo adicional ni tampoco ninguna clave de registro, absolutamente NADA (cualquiera lo puede comprobar con su herramienta de monitorización favorita). El programa es portable, no se instala, no hay instalador...adware, ni nada que se le asemeje.

Por cierto, el programa se llama PathTooLong, no "FileTooLong", ¿es posible que hayas ido a buscar el programa por internet y te hayas descargado por error un software con un nombre similar que ha resultado ser adware?.

Es que no entiendo esta acusación que haces, estás insinuando que yo he compartido un instalador/programa adware y que no he advertido sobre ello a los demás, pero eso no es cierto, yo me he limitado a compartir un archivo comprimido que solo contiene el programa tal cual (y la herramienta que usé para desempacar el UPX), que no hay ningún instalador ni nada, ni virus adware ni nada de lo que estás diciendo.

Te pido por favor que te tomes 5 minutos para que confirmes bien las cosas que tengas que veririficar en tu PC y con la descarga de MediaFire para que veas que no hay ningún "regalito" ni nada extraño y rectifiques tu acusación. Gracias.

Saludos.


Título: Re: Programa "sencillo" y serial...
Publicado por: apuromafo CLS en 9 Octubre 2017, 23:41 pm
casi siempre en programas asi, es mejor dejarlo dentro de una maquina virtual y con el serial activarlo en sus 3 dias,se vuelve a restaurar su maquina virtual y asi ganar 3 dias mas..solo en caso de necesitarlo

en lo que es personal, hay muchisimas formas que puede validar el dia real que está, asi que si atacas a todas las posibilidades, aveces logres hacerle pensar que esta recien en el dia 1 de 1, por siempre

por otro lado, en tu rama de regedit se logra apreciar algunos campos en = (terminacion muy comun en base64 ,quizas además debas ver como funciona ese cifrado en el programa y que valores le da al programa (environment variables u otro)

si no fuera que no manejo mucho tiempo libre, lo hubiera bajado y probado, pero las ideas son las que deben estar para comenzar..
"En tiempos de crisis la imaginación es más efectiva que el intelecto."

Saludos Apuromafo


Título: Re: Programa "sencillo" y serial...
Publicado por: MCKSys Argentina en 10 Octubre 2017, 02:37 am
No he visto el programa y tampoco tengo tiempo libre como para hacerlo, pero dada la funcionalidad del mismo, puedes mirar este otro, el cual es gratis: https://code.google.com/archive/p/antispy/downloads (https://code.google.com/archive/p/antispy/downloads)

Tiene muchas funcionalidades, entre las cuales te permite borrar paths muy largos.

Saludos!


Título: Re: Programa "sencillo" y serial...
Publicado por: Eleкtro en 10 Octubre 2017, 07:29 am
en tu rama de regedit se logra apreciar algunos campos en = (terminacion muy comun en base64

¿algunos?, no, lo has mirado mal, la clave trial se compone de 193 caracteres y tan solo 1 de ellos es el símbolo "=", que está al final del string.

en lo que es personal, hay muchisimas formas que puede validar el dia real que está, asi que si atacas a todas las posibilidades, aveces logres hacerle pensar que esta recien en el dia 1 de 1, por siempre

Gracias por tu tiempo y por exponer ideas, pero en este caso no sería tan viable como craquear la clave de licencia para que el programa lo reconozca como full en vez de trial, puesto que el programa tiene un máximo de usos/operacioens en modo trial, es decir, que aunque yo consiguiese hacer lo que propones también debería tratar de hallar el modo de bypassear el máximo número de usos para que siempre esté en cero. Para una persona con los suficientes conocimientos con el desamblador puede que sea pan comido, pero para mi significaría el doble de trabajo y ya ando bastante perdido en el OllyDbg intentando solo lo primero...

De todas formas con respecto a tu idea de "atacar el modo trial", cuando se ingresa una clave (trial) en el programa, se crea una subclave de registro parecida a esta:
Código:
HKEY_CURRENT_USER\SOFTWARE\Path Too Long PRO\Trial78c7
Nota: El nombre de la subclave "Trial78c7" hace referencia al primer token del username/login de la clave de licencia: "Trial78c7-54125943-81A58215-BB6F-1176-C828-A71B361C22F3"

Cuando iniciamos el programa, si analizamos las llamadas del proceso podemos ver que primero obtiene un valor de registro de tipo REG_BINARY en esa subclave (HEX: 0x13 0x54 0xBA 0x59 0x00 0x00 0x00 0x00) y luego le asigna un nuevo valor (HEX: 0x14 0x54 0xBA 0x59 0x00 0x00 0x00 0x00):

(https://i.imgur.com/xwc6qdh.png)
...por el tipo de incrementación en el valor, creo que esto podría ser la forma en la que el programa detecta el número de usos en el modo trial, pero podría ser cualquier otra cosa en realidad.
Nota: Al convertir el valor HEX a ASCII se obtienen caracteres no imprimibles.

Un problema bastante grave es que por alguna extraña razón que desconozco, pero la cual evidentemente está relacionada de forma directa con el sistema/algoritmo de protección del programa, es que cuando intento acceder a la subclave "Trial78c7" para ver que valores de registro existen dentro, me salta esto:

(https://i.imgur.com/TxtYchB.png)
..¿WTF?. He intentado utilizar otros visores profesionales del registro (ej. Registry Workshop) y tampoco pueden acceder a la clave. No es un problema de permisos de usuario, ese mensaje de error lo descarta completamente...

Esto significa que, aparte de no poder acceder de forma natural a esa subclave (y por ende no poderla exportar), tampoco puedo eliminarla ni crear un valor dentro. Evidentemente debe ser posible, si el programa puede manipular esa subclave de registro yo también debería poder conseguirlo de forma programatica, pero no he hallado el modo de hacerlo.



No he visto el programa y tampoco tengo tiempo libre como para hacerlo, pero dada la funcionalidad del mismo, puedes mirar este otro, el cual es gratis: https://code.google.com/archive/p/antispy/downloads (https://code.google.com/archive/p/antispy/downloads)

Tiene muchas funcionalidades, entre las cuales te permite borrar paths muy largos.

Gracias @MckSys, pero lamentablemente al intentar ejecutar el programa salta una caja de mensaje diciendo "La versión actual de este programa no soporta Windows de 64 Bits" (algo bastante decepcionante si nos fijamos en que la última release de ese programa es más o menos reciente, del año 2013).

Un saludo!


Título: Re: Programa "sencillo" y serial...
Publicado por: apuromafo CLS en 10 Octubre 2017, 17:33 pm
lo baje, coloque la clave, hoy muestra expirado (pasaron los 3 dias desde entonces),  
creo que pille donde cambiar xD

0056E805 | 8B 4D DC                  | mov ecx, dword ptr ss:[ebp - 0x24]                                |
0056E808 | A1 4C FA 60 00            | mov eax, dword ptr ds:[0x60FA4C]                                  |
0056E80D | 41                        | inc ecx                                                           | apuromafo
0056E80E | 90                        | nop                                                               |
0056E80F | 1B C9                     | sbb ecx, ecx                                                      |
0056E811 | 83 E1 38                  | and ecx, 0x38                                                     |
0056E814 | 83 C1 08                  | add ecx, 0x8                                                      |
0056E817 | 09 08                     | or dword ptr ds:[eax], ecx                                        |
0056E819 | 8D 75 D8                  | lea esi, dword ptr ss:[ebp - 0x28]                                |

el cambio de logica es que el valor de ecx trabaja el contador de dias o bien la habilitacion de los botones, solo revise 2 minutos, si el valor no es cero (or ecx), entonces tienes mas tiempo, algo asi asumo el algoritmo, al cambiar con inc ecx, el programa inicia de lo mas bien ya que tiene su clave (trial full ?)



Saludos Apuromafo
 
pd: en caso x que quieras probarlo, aqui va adjunto
http://rgho.st/7wG5ySwrm

aún falta el mensaje que dice que detecta que esta corrupto (que ha sido modificado)

Executable file seems corrupted


Título: Re: Programa "sencillo" y serial...
Publicado por: Eleкtro en 10 Octubre 2017, 18:13 pm
el cambio de logica es que el valor de ecx trabaja el contador de dias o bien la habilitacion de los botones, solo revise 2 minutos, si el valor no es cero (or ecx), entonces tienes mas tiempo, algo asi asumo el algoritmo, al cambiar con inc ecx, el programa inicia de lo mas bien ya que tiene su clave (trial full ?)

Genial que hayas logrado que ya no vuelva a pedir el serial y el límite de usos/operaciones, pero si te fijas el programa no funciona correctamente tras esa modificacion que realizaste, los nodos del arbol de carpetas no se expanden:

(https://i.imgur.com/3ZmghWW.png)

Y si ingresas manualmente un directorio o usas el botón "browse" tampoco funciona correctamente, no encuentra archivos con nombres largos.

Esos problemas ocurren cuando el programa detecta que el trial ha expirado. Es decir, mientras la app está en modo trial con una clave que no haya expirado, todo lo que ahora no funciona debería funcionar, pero cuando la app detecta que el trial ha expirado entonces los botones nodos y practicamente todas las funcionalidades del programa dejan de funcionar, como ocurre ahora.

En resumen, lamentablemente la app no se puede utilizar en el estado actual por que de algún modo sigue detectando que el trial ha expirado y por eso se "auto-limita" asimismo las funcionalidades de la interfaz de usuario, evitando que no se puedan expandir los nodos, ni usar los botones, ni renombrar archivos ni nada de nada. :P

PD: Si necesitas una clave trial que funcione para comprobrar como funciona la interfáz de usuario, te puedo enviar una.

Muchísimas gracias de todos modos!!


Título: Re: Programa "sencillo" y serial...
Publicado por: apuromafo CLS en 10 Octubre 2017, 19:31 pm
paso 1:
regedit en la rama, (renombre la principal a apuromafo)
luego probe denuevo el programa, y al parecer es que funciona mejor en el packed

pero si o si debe tener sus 2 ramas de regedit
aqui en mi pc me esta funcionando todo operativo (sobre el packed)
espero te sirva en el tuyo
http://rgho.st/6pDNmpLz8



Título: Re: Programa "sencillo" y serial...
Publicado por: Eleкtro en 10 Octubre 2017, 20:13 pm
@apuromafo

¡Magnífico!, has hecho que parezca tan facil...

MUCHAS GRACIAS, funciona a la perfección... o al menos eso es lo que parece por el momento.


Título: Re: Programa "sencillo" y serial...
Publicado por: apuromafo CLS en 10 Octubre 2017, 20:39 pm
El software que intentas usar, el cual es FileTooLong, es Adware, lo instale y me instalo virus por todas partes, por suerte alcanse ha aislar el pc del internet.
Pero yo nunca me he topado con archivos con nombres tan largos...
eso es otro nombre xD, estas confundiendo la herramienta con lo que ha presentado, al depurar no se ve ninguna forma maliciosa de trabajar


...por otro lado una vez que uno accede a la rama de regedit y se renombra desde "regedit no se puede eliminar" , busqué varias formas, la mejor seria esta herramienta gratuita
http://registry-finder.com/  vamos a la rama a eliminar , colocas eliminar y listo, se elimina sin problema

el tema debe ir en el "flag" , normalmente hay ramas de regedit que se pueden virtualizar inclusive, asi que asumo que el autor lo ha hecho intencionalmente para evitar que le quitaramos el trial ? bueno, sea como sea, funciona por el minuto

instrucciones hechas para hacer un resumen
0 tenemos un programa que si no  se registra el programa, los botones de la interfáz de usuario se deshabilitan, y los nodos del treeview también. En resumen, que no se puede usar ninguna funcionalidad del programa.
1) ingresamos usuario y serial valido de 3 dias..e intentamos analizar todo lo que parezca llamativo (creacion de ramas, acceso a regedit entre otros)
se logra ver hay muchas send... y valores entre 0 y 1, valores a comparar en cada segmento, asi que aburrido de mirarlo, elegi las peores condiciones

2) expired y no funcional: elimine la rama de regedit que tenia la rama, el programa sigue siendo trial

3)  sobre el programa desempacado buscamos tantas referencias del trial como podemos,vemos una cantidad de saltos necesarios (al menos 4),  llegamos al dword que apuntamos  60FA4C  y buscamos todas las referencias, y el lugar mas vulnerable era ecx
0056E808 | A1 4C FA 60 00            | mov eax, dword ptr ds:[0x60FA4C]                                  |
0056E80D | 41                        | inc ecx                                                           | apuromafo
0056E80E | 90                        | nop                                                               |

el valor nuevo en bytes es 41 90 , dado que toda escritura es al revez desde el depurador es mov word (tamaño de 2 bytes), y los bytes 9041

cuando salta al oep (packed) es asi:
jmp 0x54e4a2

la nueva instruccion quedó asi en el packed:
00690ABC  mov word ptr ds:[0x56E80D], 0x9041     
00690AC5   jmp 0x54E4A2       

eso fue todo, programa ha quedado parcialmente operativo ?, aun no se si hay mas cosas

Saludos Apuromafo