Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: TruenoCaos en 20 Febrero 2012, 23:18 pm



Título: Programa en .Net
Publicado por: TruenoCaos en 20 Febrero 2012, 23:18 pm
Este programa lo consegui crackear con jump/nop, pero ahora estoy intentando crear un keygen

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;
}
esto parece que copia los datos de license de una a otra, y lo hace de forma mas o menos directa

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));
}
He creado varias licencias con los mismos datos (solo varia el generate time)
cambia a partir de la posicion 496 del archivo de licencia

Código:
f9a8828716eb09ebbc230efcad39d2a3
esto deberia ser una tipo de timestamp codificado

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


Título: Re: Programa en .Net
Publicado por: TruenoCaos en 23 Febrero 2012, 01:33 am
Bump
Cualquier idea que se os pase por la cabza ponerla


Título: Re: Programa en .Net
Publicado por: .:UND3R:. en 26 Febrero 2012, 17:58 pm
A mi se me ocurre la idea de que subas el instalador  ;D

Saludos


Título: Re: Programa en .Net
Publicado por: TruenoCaos en 1 Marzo 2012, 00:59 am
Perdon por la tardanza
el programa en si es un bot que se injecta en un juego ( tiene una parte propia de programa con su interfaz y tal)
se puede descargar desde  aqui  (http://files.l2tower.eu/l2tower.zip)
vas a tener que crearte una cuenta en el foro con la que despues puedes crearte la licencia desde el programa