El programa esta compuesto por un ejecutable .net, una libreria .net y otra en ensamblador
El programa crea una license.cfg cuando te registras, compuesto de 640 caracteres que estan en el rango hexadecimal ( es decir "e4bb2..." )
donde creo que se deshace el archivo es en una funcion a la que no se como acceder
Código:
// <Module>
[SuppressUnmanagedCodeSecurity]
[MethodImpl(MethodImplOptions.Unmanaged | MethodImplOptions.PreserveSig)]
public unsafe static extern AuthenticateResult DoAuth(char*);
se que extern significa que esta en otra libreria, pero donde?
otra duda que tengo es en
Código:
// <Module>
internal unsafe static License* =(License* ptr, License* ptr2)
{
<Module>.std.basic_string<char,std::char_traits<char>,std::allocator<char> >.=(ptr, ptr2);
<Module>.std.basic_string<char,std::char_traits<char>,std::allocator<char> >.=(ptr + 28, ptr2 + 28);
<Module>.std.basic_string<char,std::char_traits<char>,std::allocator<char> >.=(ptr + 56, ptr2 + 56);
<Module>.std.basic_string<char,std::char_traits<char>,std::allocator<char> >.=(ptr + 84, ptr2 + 84);
<Module>.std.basic_string<char,std::char_traits<char>,std::allocator<char> >.=(ptr + 112, ptr2 + 112);
<Module>.std.basic_string<char,std::char_traits<char>,std::allocator<char> >.=(ptr + 140, ptr2 + 140);
*(ptr + 168) = *(ptr2 + 168);
return ptr;
}
una de las cosas que contiene la licencia es el generate time
Código:
public static string GetLicenseGenerateTime()
{
return new string(<Module>.std.basic_string<char,std::char_traits<char>,std::allocator<char> >.c_str(ref <Module>.g_licence + 140));
}
cambia a partir de la posicion 496 del archivo de licencia
Código:
f9a8828716eb09ebbc230efcad39d2a3
muchas gracias por leer y si teneis alguna ida decirmela XD
Un saludo
edit:
del 28 al 56 se guarda la hardwarekey (28 digitos)
en otra parte del programa se calcula (puede que de otra forma otra hw key) con MD5 (es decir 32 digitos)
Y tambien hay que tener en cuenta que la codificacion se tiene que poder hacer en los dos sentidos