buenas,
estoy trabajando en algo que me he encontrado que me ha dejado sorprendido, porque básicamente es algo que no he visto hasta ahora (y llevo ya unos años en esto del reversing)...
Firstbeat Athlete es programa que sirve para analizar el resultado de una grabación de un sesión de cardio con un pulsómetro. Básicamente es el más completo, complejo y útil que hay, dentro tiene el resultado del trabajo de algunas tesis, estudios científicos, etc... Encima es un programa apenas conocido...
Resumiendo:
- Es una aplicación hecha en Borland C++
- Usa Firebird 1.5 para guardar datos, incluso la activation key se guarda en una tabla (recomiendo usar firebird maestro por ejemplo para trabajar con el fichero de datos que está dentro de la carpeta data)
- El proceso de activación es por internet, si detecta conectividad, el mismo conecta y envia la key que le pone el usuario a un server que es el que valida (se ve el string de conectividad fácilmente), sino te permite activarlo manualmente pero por email
- No sé si una vez activado sigue siendo necesario validar online
- hay una dll , securitydll.dll que contiene funciones criptograficas, quizás esté ahí la validación de la key?
Hasta ahí lo que he averiguado hasta ahora. Lo raro es que por ahora lo estoy intentando con IDA (mi herramienta favorita).
Ida 5.2 se cuelga y sale cuando lleva un rato
Ida 5.5 y 6.0 (relax, uso 6.0 la demo ) se lo tragan y cargan los FLIRT del BDS2008, pero ambos llevan casi 24 horas procesando y analizando y continuan!!
Cierto que el fichero es de 25mb, pero aquí viene lo raro: la aplicación lleva dentro funciones, varias, con miles y miles de líneas de código cada una, miles de variables internas, en una de ellas IDA advierte con un error que hay más de 5000 líneas de declaración previa a UNA SOLA FUNCIÓN. Monstruoso.
Ideas:
- codigo ofuscado?
- sé, porque he leído mucho sobre esta aplicación que usa redes neuronales, posiblemente se genera el código de estas con un generador de código y estas funciones mostruosas sean el resultado de eso? ningún programador cuerdo haría ese código así de enorme...
- es código generado de alguna otra manera?
en estos momentos, IDA sigue analizando la aplicación y creo que después le haré un reanalyze a ver si limpia algo más, porque le está costando un trabajo enorme al IDa... tengo el pc colapsado (un ida en cada núcleo ambos al 100%)
a ver si termina y lo cargo en Olly a ver qué hace..
Pongo esto por dos motivos:
- si alguien quiere echar una mano y ofrecer algún consejo
- por curiosidad, esas funciones y esas miles de variables es algo que por ahora no he visto nunca y la verdad no las entiendo...