¿Cómo puedo encontrar el TAMAÑO de una dirección de memoria de otro proceso?

Iniciado por CCCoder, 6 Diciembre 2013, 07:02 AM

0 Miembros y 1 Visitante están viendo este tema.

CCCoder

Hola usuario,
El actual problema que tengo es que no sé como saber el tamaño de la direccion de memoria de otro proceso.
El Cheat Engine (CE) te señaliza que tipo de dato es (2/4/8Byte). Me podrían decir como calcular eso?... He escuchado de HeapSize con CreateHeap y VirtualAllocEx(Este queda descartado, porque lo reserva y lo inicializa a cero.)

Saludos,
Espero sus respuestas.


EDIT----

Posible Soluciòn
DWORD N;
DWORD ByteT;
HWND hWnd = FindWindowA(0, "Buscaminas");
DWORD PID;
GetWindowThreadProcessId(hWnd,&PID);
HANDLE proceso = OpenProcess(PROCESS_ALL_ACCESS, false, PID);
ReadProcessMemory(proceso,(LPCVOID)0x000102C2, &N, sizeof(N), &ByteT);
printf("%d",ByteT);


Porque siempre me devuelve 4..
Creo que es porque sizeof(DWORD)=4 bytes.
Como halarrìan el tamaño de bytes de la direccion 0x000102C2 que es 2 bytes?

ivancea96

Mira, la memoria no tiene un tamaño fijo. Es el programa que lo lee con un tamaño específico.

Una dirección: F5 26 AB CB

Se puede leer como entero, y leemos todo.
Se puede leer como string, y leemos (F5) (26) (AB) (CB). (Cada byte un caracter)
Se puede leer como coma flotante.
Se puede leer como double? También, pero para ello, habría que coger 4 bytes más.

Con el CE, puedes ver quién lee de esa memoria. Sabiendo quién lee, sabrás lo que es. Recuerda, que el CE puede leer una misma dirección de memoria como tipo de dato que tú le digas.

En definitiva, no hay una regla (que yo sepa), que te diga cómo se lee cada dirección.

Suerte

CCCoder

O sea que los tipos de dato que sale en el cheat engine cuando selecciones un ADDRESS es aletorio? No lo creo...

ivancea96

Nunca en mi vida vi un tipo aleatorio en el Cheat Engine.
Tú eliges el tipo siempre.