elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: [Ayuda]Acceso a dirección de memoria con apuntadores en varios niveles en: 6 Mayo 2014, 16:38 pm
Lo estás haciendo bien, ese numero que estás imprimiendo está en decimal. Pasalo a HEX y tendrás el valor del primer offset.

Es decir, coge ese numero, pasalo a hexadecimal y sumale 0x10. El resultado de esa operación deberás de usarlo para ejecutar otro ReadProcessMemory. Así hasta llegar a tu offset deseado.

(es un coñazo) xD

Te recomiendo que te leas mi tutorial avanzado de cheatengine, quizás puedas adquirir más conocimientos.

UN MILLÓN!!! muchisimas gracias, al fin lo he logrado jejeje.

Finalmente a quedado asi para los que en un futuro tengan mi problema:

Citar
ReadProcessMemory(hproc, (LPCVOID)(DLL + 0x007C3D1C), &ptr1, sizeof(ptr1), NULL);
        ReadProcessMemory(hproc, (LPCVOID)(ptr1 + 0x10), &ptr1, sizeof(ptr1), NULL);
        ReadProcessMemory(hproc, (LPCVOID)(ptr1 + 0x2c), &ptr1, sizeof(ptr1), NULL);
        ReadProcessMemory(hproc, (LPCVOID)(ptr1 + 0x3e0), &ptr1, sizeof(ptr1), NULL);
        ReadProcessMemory(hproc, (LPCVOID)(ptr1 + 0x17c), &ptr1, sizeof(ptr1), NULL);
        printf("CAST: %x\n", ptr1); //un casteo bastante balurdo xD

Me pasare por tu tutorial de cheat engine como lo has mencionado, soy nuevo en esto y es un tema bastante interesante ya que lo poco que se lo aprendi a coñazos xD :).

Saludos y repito muchisimas gracias a los que se molestaron en responder!
2  Programación / Programación C/C++ / Re: [Ayuda]Acceso a dirección de memoria con apuntadores en varios niveles en: 6 Mayo 2014, 15:45 pm
Tienes que leer offset por offset, no puedes hacerlo de golpe. Es como te ha explicado x64Core

Lee el primer offset e imprimelo por pantalla, deberás ver 21840e38
Luego deberas leer el offset 21840e38+10
...

Así hasta llegar al final. Ánimo

Gracias por tu pronta respuesta :D.

Entiendo lo que hay que hacer a nivel teorico pero he intentado lo que dices (imprimir las direcciones) y me salen otras que no son.

Lo he intentado con este:

Citar
   GetWindowThreadProcessId(hwnd, &pId);
    hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pId);
    DLL = GetModuleBase(pId, "client.dll");
    DWORD ptr1;
    while(true)
    {                      
        ReadProcessMemory(hproc, (LPCVOID)(DLL + 0x007C3D1C), &ptr1, sizeof(ptr2), NULL);
        cout << ptr1 << endl;
        
        Sleep(100);
    }

Y mi salida es:



Creo que mi problema es algún desreferenciamiento para ver la direccion de memoria que almacena (o ese valor que me arroja es la direccion de memoria en decimal?).

Saludos.
3  Programación / Programación C/C++ / Re: [Ayuda]Acceso a dirección de memoria con apuntadores en varios niveles en: 6 Mayo 2014, 14:43 pm
Hola x64Core gracias por tu respuesta.

He intentado lo que dijiste pero no entendi muy bien lo de "En el programa del proceso remoto ese puntero deberia estar declarado como: Type*** Ptr"


De todos modos te adjunto mi código:



Citar
    hwnd = FindWindow(0, "Game Exec");
    GetWindowThreadProcessId(hwnd, &pId);
    hproc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pId);
    DLL = GetModuleBase(pId, "client.dll");
    DWORD ptr1;
    DWORD ptr2;
    DWORD ptr3;
    DWORD ptr4;
    DWORD ptr5;
    DWORD read;
    while(true)
    {
        ReadProcessMemory(hproc, (LPCVOID)(DLL + 0x007c3d1c), &ptr1, sizeof(ptr1), &read);
        ReadProcessMemory(hproc, &ptr1, &ptr2, sizeof(ptr2), &read);
        ReadProcessMemory(hproc, &ptr2, &ptr3, sizeof(ptr3), &read);
        ReadProcessMemory(hproc, &ptr3, &ptr4, sizeof(ptr4), &read);
        ReadProcessMemory(hproc, &ptr4, &ptr5, sizeof(ptr5), &read);
        cout << ptr5 << endl;
        Sleep(100);
    }

Offsets:



Que es lo que esta mal?, disculpen las molestias :P.

Saludos.
4  Programación / Programación C/C++ / Re: [Ayuda]Acceso a dirección de memoria con apuntadores en varios niveles en: 6 Mayo 2014, 02:03 am
Lo que hace el multi level es lo siguiente.

mov eax, address
mov eax, [eax]
add eax, offset

osea que la 1ra vez que sumás un offset, tenés que leer ese address el cual es la suma de: Address + offset

La sintaxis sería:
[[[Address + offset] + offset] + offset] + ...

Saludos!

Gracias por tu respuesta :).

Lo he probado pero presento errores de compilacion: main.cpp expected primary-expression before '[' token

Lo he colocado asi: ReadProcessMemory(hproc, (LPCVOID)[[[[[ClientDLL + 0x007C3D1C] + 0x10] + 0x2c] + 0x3e0] + 0x17c] ), &buff, 1, NULL);

De este modo (o parecido) no funciona? O es que debo ir haciendo Read a Read hasta llegar al ultimo offset?

Saludos.
5  Programación / Programación C/C++ / [SOLUCIONADO] Acceso a dirección de memoria con pointers en varios niveles en: 6 Mayo 2014, 01:08 am
He intentado hacer un pequeño programa en C++ que he probado de multiples maneras poder acceder a este valor de la dirección de memoria pero no he podido. Sera que alguien puede hecharme una mano?


Seria algo asi? : ReadProcessMemory(hproc, (LPCVOID)((((((ClientDLL + 0x007C3D1C) + 0x10) + 0x2c) + 0x3e0) + 0x17c)), &buff, 1, NULL);

Quiero obtener la dirección a la que apuntan (y obviamente su valor).

A nivel de sintaxis, que debo hacer?

PD: Se que debo obtener el handler del modulo client.dll y de alli partir (base address creo que se llama) pero he intentado de todo y nada :( alguna idea?.

Saludos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines