Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - TruenoCaos

#1
Ingeniería Inversa / Programa en .Net
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


// <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


// <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


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


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
#2
Ingeniería Inversa / Programa con net reactor
17 Enero 2012, 23:35 PM
Buenos dias

Desde no hace mucho estoy a empezando a intentar crackear algunas programas y me he encontrado con uno enpaketado en net reactor 3.x y estoy muy perdido

he encontrado
http://foro.elhacker.net/ingenieria_inversa/problema_con_unpack_net_reactor_3980-t335893.0.html

pero no consigo debugearlo ya he cambiado las excepciones en las opciones pero me sale este error


Message=Debugged program was unable to process exception
Message=Module C:\Windows\syswow64\MSCTF.dll
Message=Process terminated, exit code 4000001E (1073741854.)

y no consigo solucionarlo de ninguna manera, no se si tiene algo que ver que sea 64 bits

Aun asi consegui guardar el programa cargado desde la ram a un archivo, pero son mas de 40 mb lo que se me ha guardado (el programa original ocupa 1 mb + algunos archivos de datos) y estan bien creadas la RVA y su tamaño pero el programa no se ejecuta correctamente (se abre una terminal y me dice que el programa dejo de responder no me da ni codigo de error) y si intento debugear el nuevo programa se me termina en el mismo punto que el original.

Muchas gracias por leer y a ver si me podeis aconsejar