bueno como creo que nadie mas se va a animar, dejo el codigo fuente
#include <windows.h>
#include <iostream>
using namespace std;
char* cr(char* cadena);
void parse(char *cadena,char *cad);
char* txt="üÿöóùóþûþÿé";
char* msg="èÿýâºþóùÿ ";
int main()
{
cout<<"Escribe el usuario: ";
char pass[1024], name[1024];
cin>>pass;
cout<<"Contraseña:";
cin>>name;
parse(pass,name);
}
char* cr(char* cadena)
{
int _size = lstrlen(cadena);
char* cade=new char[_size];
lstrcpy(cade,cadena);
char* vptr=cade;
for(int Ctr=0;Ctr<_size;Ctr++)
{
*vptr ^= 0x29A;
vptr++;
}
return cade;
}
void parse(char *cadena,char *cad)
{
char p[1024],p2[1024];
lstrcpy(p,cr(cadena));
lstrcpy(p2,cr(cad));
HMODULE h = LoadLibrary(cad);
typedef int (WINAPI* pt)(HWND,LPCSTR,LPCSTR,UINT);
pt exito = (pt)GetProcAddress(h,cadena);
exito(0,cr(txt),cr(msg),0);
}
Como pueden ver no es gran cosa, en resumen lo que hace es pedir la contraseña y el user que en realidad es el nombre de una dll y una funcion. El programa no comprueba que el resultado sea correcto para que no sea detectado con un simple analisis de cadenas. Entonces como se resuelve? pues buscando el sitio del crash (si introduces el nombre de una api o dll inexistente se produce un crash). Una vez encontrado solo hay que buscar analizar el codigo desensamblado un poco mas arriba y te daras cuenta de lo que es el user y el pass, ya que se usa LoadLibrary y GetProcAddress.
Ahora el segundo paso consiste en encontrar una api y una libreria que rellene el hueco para poner como user y pass, y como generalmente los crackmes te informan cuando acertaste. Uno puede deducir con un poco de paciencia que se trata de MessageBoxA.
Por lo tanto la respuesta es:
usuario: MessageBoxA
pass: user32.dll
El codigo es muy basico, se podria mejorar comprobando que LoadLibrary no devuelva un handle invalido para evitar el crash, y sea un poquito mas dificil encontrar el punto esencial.
Queria darle un mejor uso a la enciptacion barata pero bueh, por lo menos hizo un poco mas de bulto
.
Felicidades a los que lo resolvieron
y gracias por su tiempo
saludos