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ú

Mensajes - TruenoCaos

#1
Yo me acuerdo de haber leido hace tiempo un articulo que hablaba de esto mas o menos, y lo que hacian (si no lo entendi mal) es un hook a las apis del windows que suelen usar los debuggers, y lo que hacan ahi es no dejar ejecutarlos (se basaban en que primero se ejecuta el programa y luego se ejecuta el debgger) pero puede que una version modificada de esto puede servir:

Por ejemplo la primera vez que se ejecuta deja el hook y no lo libera, o cualquier otra idea
#2
Ingeniería Inversa / Re: Programa en .Net
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
vas a tener que crearte una cuenta en el foro con la que despues puedes crearte la licencia desde el programa
#3
Ingeniería Inversa / Re: Programa en .Net
23 Febrero 2012, 01:33 AM
Bump
Cualquier idea que se os pase por la cabza ponerla
#4
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
#5
como ya sabeis de esto no se mucho, pero lo normal para comprobar que algo existe es volver intentar abrirlo.

una pregunta si no se carga el dll, y se intenta usar una funcion de esa dll, no saltaria un error?

Un saludo
#6
bump
#7
Todavia no he conseguido localizarlo, me pierdo con todos los hilos, aun asi tengo algunas preguntas:

- si lo encuentro como hago el que sea permanente el cambio? por que todo se esta realizando en los segmentos de librerias o de debugger?

- hay posibilidad de con el debbugger del IDA poner un breakpoint en todo un segmento ( que se pare el programa en cuanto un hilo se mente en el segmento de System.web) ?

- que tecnica utilizan los programas para saber que programa lo ha ejecutado? creo recordar que habia una referencia en el psp del programa pero no se si es eso lo que se utiliza normalmente

- si hay algun programa o plugin para el IDA que compare dos archivos y muesre sus diferencias, por que hay un programa que crakee hace tiempo y estan sacando nuevas versiones y me gustaria poder tener un poco mas de facilidad para acordarme de que hize antes

Muchas gracias por la ayuda
#8
Perdon por no haber contestado antes, estaba un poco liado, por ahora lo que he conseguido es ejecutar el programa con un plugin del IDA que me proteje del antidebugger, pero el problema que tengo es que no consigo localizar donde esta lo que deseo cambiar.

El programa se carga y despues te deja la opcion de logearte y comprueba tu cuenta con su servedor, pero no consigo localizar donde esta eso.

Ademas despues de cargarse no hay ningun segmento que pertenezca al programa y todas las acciones no se suelen salir del ntdll.dll asi que estoy muy perdido, por que no se en que codigo fijarme ni tampoco de que hacer un dump, (ni como hacerlo con el IDA)

En el momento en el que (creo yo) que se realiza la conexion con el servidor y se determina si la cuenta es correcta hay 68 modulos y 16 threads

Estoy muy perdido xD
#9
vale ya consegui solucionar el error que me daba antes y avance un poco pero el problema que tengo ahora es que si tengo el ida o olly abiertos si abro el programa se cierra rapidamente asi que supongo que detecta que hay un desensamblador pero mi duda es como lo detecta por que el codigo del programa es muy raro y no se exactamente que buscar.
muchas gracias

edit:
intente copiarlo desde la memoria con un programa que viene con el cff explorer pero solo me copia el modulo del programa no me compia los dlls y el programa me da una violacion de segmento al ejecutar el dll (el dump es de 200k y el programa 1.2m esto es normal?)
#10
Ese es el tutorial que he seguido, pero el video que esta en el otro post que puse antes, es el mismo, pero el error que me da es algo que no entiendo por que puede ser, ademas me lo da exactamente el mismo en el crackme que en el programa que quiero modificar